如果您关心的是要忠于其余的校长。
那么,通常有4点需要牢记:
- Web 服务的基本 URI
- Web 服务支持的数据的 Internet 媒体类型。
这通常是 JSON、XML 或 YAML,但也可以是任何其他有效的 Internet 媒体类型。
- Web 服务使用 HTTP 方法(例如,GET、PUT、POST 或 DELETE)支持的一组操作。
- API 必须是超文本驱动的
有关详细信息,请参阅http://en.wikipedia.org/wiki/Representational_state_transfer。
现在,话虽如此,我建议将上面的代码更改为接近下面的伪代码。
1)资源的存在是关键,将您的帖子视为可以通过 URI 访问的资源集合。(身份验证和授权是您可能还需要处理的其他问题):
api.domain.com/resources/posts => 这个 URI 指向 Posts 的集合
2) 需要定义您希望使用 HTTP 方法/动词支持的一组操作,例如,我们可能希望通过执行以下操作仅检索集合的一个成员:
api.domain.com/resources/posts/12
以下是可以在此 URI 的传入请求中找到的请求标头和正文:
接受:application/json
内容类型:application/json
请求网址:http
://api.domain.com/resources/posts/12
请求方法:GET
您的应用程序应该能够处理该类型的请求,而无需在 URI 中规定操作,让我们回到第 (1) 点,
而不是这样写一个URI:
domain.com/api/posts/全部
您的 URI 应该这样建模:
resources/posts/12 作为资源/类型/项目从集合中检索一个成员,
资源/帖子作为资源/类型与整个集合一起使用。
以下是代码示例:
通用抽象类在这里你可以实现一些常见的任务。如果您正在使用基于服务的实现,这也可以通过服务来完成。
abstract class ResourcesController extends AppController {
}
class PostResourcesController extends ResourcesController {
/**
* By the time this method is called in your controller/class, you already know
* that the HTTP method is GET.
*
* @param Request\$_GET $request A request instance
* @param int $postId The post ID to retrieve
*
* @return Response A reponse instance
*/
function getPost(Request $Request, $postId = null)
{
/**
* Here you can use the request object to get
* the response content type
* the requesting client accepts. Example JSON or XML.
*/
/**
* using the $postId you can then query your database
* to retrieve a post with that ID or use a sort of
* service.
*/
/**
* Once you implemented a you logic
* you can build a response to return.
*/
}
}
这段代码不完整,但我希望它能让您了解真正的 Restful API 可能是什么样子。
确保
“应用程序可以通过知道两件事与资源交互:资源的标识符和所需的操作”的关键。
希望这有帮助。