[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FGWN0CZMMTST4R759D060S":3,"skill-same:01M6FGWN0CZMMTST4R759D060S":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":34,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6FGWN0CZMMTST4R759D060S","rest-api-design",null,"Designs RESTful APIs with proper resource naming, HTTP methods, status codes, and response formats. Use when building new APIs, establishing API conventions, or designing developer-friendly interfaces.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Frest-api-design\u002FSKILL.md",[18,23,26,31],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":32,"categoryName":33,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000032","设计师",[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"rest api design","api design","REST","api","design","rest api","use","naming","with","codes","restful apis","conventions","methods","api conventions","developer","http","status","2026-11-10 10:12:30",false,"---\nname: rest-api-design\ndescription: Designs RESTful APIs with proper resource naming, HTTP methods, status codes, and response formats. Use when building new APIs, establishing API conventions, or designing developer-friendly interfaces.\nlicense: MIT\n---\n\n# REST API Design\n\nDesign RESTful APIs with proper conventions and developer experience.\n\n## Resource Naming\n\n```\n# Good - nouns, plural, hierarchical\nGET    \u002Fapi\u002Fusers\nGET    \u002Fapi\u002Fusers\u002F123\nGET    \u002Fapi\u002Fusers\u002F123\u002Forders\nPOST   \u002Fapi\u002Fusers\nPATCH  \u002Fapi\u002Fusers\u002F123\nDELETE \u002Fapi\u002Fusers\u002F123\n\n# Bad - verbs, actions in URL\nGET    \u002Fapi\u002FgetUsers\nPOST   \u002Fapi\u002FcreateUser\nPOST   \u002Fapi\u002Fusers\u002F123\u002Fdelete\n```\n\n## HTTP Methods\n\n| Method | Purpose | Idempotent |\n|--------|---------|------------|\n| GET | Read resource | Yes |\n| POST | Create resource | No |\n| PUT | Replace resource | Yes |\n| PATCH | Partial update | Yes |\n| DELETE | Remove resource | Yes |\n\n## Status Codes\n\n| Code | Meaning | Use For |\n|------|---------|---------|\n| 200 | OK | Successful GET, PATCH |\n| 201 | Created | Successful POST |\n| 204 | No Content | Successful DELETE |\n| 400 | Bad Request | Validation errors |\n| 401 | Unauthorized | Missing auth |\n| 403 | Forbidden | Insufficient permissions |\n| 404 | Not Found | Resource doesn't exist |\n| 429 | Too Many Requests | Rate limited |\n\n## Response Format\n\n```json\n{\n  \"data\": {\n    \"id\": \"123\",\n    \"type\": \"user\",\n    \"attributes\": {\n      \"name\": \"John\",\n      \"email\": \"john@example.com\"\n    }\n  },\n  \"meta\": {\n    \"requestId\": \"req_abc123\"\n  }\n}\n```\n\n## Collection Response\n\n```json\n{\n  \"data\": [...],\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20,\n    \"total\": 150,\n    \"totalPages\": 8\n  },\n  \"links\": {\n    \"self\": \"\u002Fapi\u002Fusers?page=1\",\n    \"next\": \"\u002Fapi\u002Fusers?page=2\"\n  }\n}\n```\n\n## Query Parameters\n\n```\nGET \u002Fapi\u002Fproducts?category=electronics    # Filtering\nGET \u002Fapi\u002Fproducts?sort=-price,name        # Sorting\nGET \u002Fapi\u002Fproducts?page=2&limit=20         # Pagination\nGET \u002Fapi\u002Fproducts?fields=id,name,price    # Field selection\n```\n\n## Best Practices\n\n- Use nouns for resources, not verbs\n- Version API via URL path (`\u002Fapi\u002Fv1\u002F`)\n- Return appropriate status codes\n- Include pagination for collections\n- Document with OpenAPI\u002FSwagger\n","# REST API Design\n\nDesign RESTful APIs with proper conventions and developer experience.\n\n## Resource Naming\n\n```\n# Good - nouns, plural, hierarchical\nGET    \u002Fapi\u002Fusers\nGET    \u002Fapi\u002Fusers\u002F123\nGET    \u002Fapi\u002Fusers\u002F123\u002Forders\nPOST   \u002Fapi\u002Fusers\nPATCH  \u002Fapi\u002Fusers\u002F123\nDELETE \u002Fapi\u002Fusers\u002F123\n\n# Bad - verbs, actions in URL\nGET    \u002Fapi\u002FgetUsers\nPOST   \u002Fapi\u002FcreateUser\nPOST   \u002Fapi\u002Fusers\u002F123\u002Fdelete\n```\n\n## HTTP Methods\n\n| Method | Purpose | Idempotent |\n|--------|---------|------------|\n| GET | Read resource | Yes |\n| POST | Create resource | No |\n| PUT | Replace resource | Yes |\n| PATCH | Partial update | Yes |\n| DELETE | Remove resource | Yes |\n\n## Status Codes\n\n| Code | Meaning | Use For |\n|------|---------|---------|\n| 200 | OK | Successful GET, PATCH |\n| 201 | Created | Successful POST |\n| 204 | No Content | Successful DELETE |\n| 400 | Bad Request | Validation errors |\n| 401 | Unauthorized | Missing auth |\n| 403 | Forbidden | Insufficient permissions |\n| 404 | Not Found | Resource doesn't exist |\n| 429 | Too Many Requests | Rate limited |\n\n## Response Format\n\n```json\n{\n  \"data\": {\n    \"id\": \"123\",\n    \"type\": \"user\",\n    \"attributes\": {\n      \"name\": \"John\",\n      \"email\": \"john@example.com\"\n    }\n  },\n  \"meta\": {\n    \"requestId\": \"req_abc123\"\n  }\n}\n```\n\n## Collection Response\n\n```json\n{\n  \"data\": [...],\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 20,\n    \"total\": 150,\n    \"totalPages\": 8\n  },\n  \"links\": {\n    \"self\": \"\u002Fapi\u002Fusers?page=1\",\n    \"next\": \"\u002Fapi\u002Fusers?page=2\"\n  }\n}\n```\n\n## Query Parameters\n\n```\nGET \u002Fapi\u002Fproducts?category=electronics    # Filtering\nGET \u002Fapi\u002Fproducts?sort=-price,name        # Sorting\nGET \u002Fapi\u002Fproducts?page=2&limit=20         # Pagination\nGET \u002Fapi\u002Fproducts?fields=id,name,price    # Field selection\n```\n\n## Best Practices\n\n- Use nouns for resources, not verbs\n- Version API via URL path (`\u002Fapi\u002Fv1\u002F`)\n- Return appropriate status codes\n- Include pagination for collections\n- Document with OpenAPI\u002FSwagger\n",{"name":5,"license":15,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fsecondsky\u002Fclaude-skills\u002Frest-api-design",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill rest-api-design",{"tool":72,"command":73},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill rest-api-design",{"tool":75,"command":76},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill rest-api-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Frest-api-design\u002FSKILL.md",true,[],[81,93,103,112,118,125],{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":89,"publishedAt":52},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[90,91,92],"model","model hierarchy","model hierarchy skill",{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":99,"publishedAt":52},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[98],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},[100,101,102],"MCP","zoom","zoom mcp",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":52},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[109,110,111,101],"sdk","zoom apps sdk","apps",{"skillNo":113,"name":114,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":52},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[114],{"skillNo":119,"name":120,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":52},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[123],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},[120],{"skillNo":126,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":52},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[127]]