金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

wheels-api-generator

wheels-api-generator 是面向软件开发的 Agent Skill,来自 wheels-dev/wheels。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Generate RESTful API controllers with JSON responses, proper HTTP status codes, and API authentication. Use when creating API endpoints, JSON APIs, or web services. Ensures proper REST conventions and error handling.

SKILL.md

下载 MD ↓
nameWheels API Generator
descriptionGenerate RESTful API controllers with JSON responses, proper HTTP status codes, and API authentication. Use when creating API endpoints, JSON APIs, or web services. Ensures proper REST conventions and error handling.

Wheels API Generator

When to Use This Skill

Activate when: - User requests to create an API - User wants JSON endpoints - User mentions: API, REST, JSON, endpoint, web service

API Controller Template

component extends="Controller" {

    function config() {
        provides("json");
        verifies(only="show,update,delete", params="key", paramsTypes="integer");
        filters(through="requireApiAuth");
    }

    function index() {
        resources = model("Resource").findAll(order="createdAt DESC");

        renderWith(
            data=resources,
            format="json",
            status=200
        );
    }

    function show() {
        resource = model("Resource").findByKey(key=params.key);

        if (!isObject(resource)) {
            renderWith(
                data={error="Resource not found"},
                format="json",
                status=404
            );
            return;
        }

        renderWith(
            data=resource,
            format="json",
            status=200
        );
    }

    function create() {
        resource = model("Resource").new(params.resource);

        if (resource.save()) {
            renderWith(
                data=resource,
                format="json",
                status=201,
                location=urlFor(action="show", key=resource.key())
            );
        } else {
            renderWith(
                data={errors=resource.allErrors()},
                format="json",
                status=422
            );
        }
    }

    function update() {
        resource = model("Resource").findByKey(key=params.key);

        if (!isObject(resource)) {
            renderWith(data={error="Not found"}, format="json", status=404);
            return;
        }

        if (resource.update(params.resource)) {
            renderWith(data=resource, format="json", status=200);
        } else {
            renderWith(data={errors=resource.allErrors()}, format="json", status=422);
        }
    }

    function delete() {
        resource = model("Resource").findByKey(key=params.key);

        if (!isObject(resource)) {
            renderWith(data={error="Not found"}, format="json", status=404);
            return;
        }

        resource.delete();
        renderWith(data={message="Deleted"}, format="json", status=204);
    }

    private function requireApiAuth() {
        var headers = getHTTPRequestData().headers;

        if (!structKeyExists(headers, "Authorization")) {
            renderWith(data={error="Unauthorized"}, format="json", status=401);
            abort;
        }

        // Validate API token
        var token = replace(headers.Authorization, "Bearer ", "");
        if (!isValidApiToken(token)) {
            renderWith(data={error="Invalid token"}, format="json", status=401);
            abort;
        }
    }

    private boolean function isValidApiToken(required string token) {
        // Token validation logic
        return true;
    }
}

HTTP Status Codes

  • 200 OK: Successful GET, PUT, PATCH
  • 201 Created: Successful POST
  • 204 No Content: Successful DELETE
  • 400 Bad Request: Invalid request data
  • 401 Unauthorized: Missing/invalid authentication
  • 403 Forbidden: Insufficient permissions
  • 404 Not Found: Resource doesn't exist
  • 422 Unprocessable Entity: Validation errors
  • 500 Internal Server Error: Server error

Generated by: Wheels API Generator Skill v1.0

来源:wheels-dev/wheels · Apache-2.0 许可 · 许可原文 · MD 为来源页保存的历史版本