laravel - 如何为现有的 Laravel 应用创建公共 API 系统
问题描述
我正在寻找为使用 Web 应用程序的客户创建公共 API 访问的方法。
API 应允许客户远程下订单。
处理 API 身份验证的最佳方式是什么?关于如何更好地处理请求/返回响应是否有任何通用规则(最佳实践)?
注意:当前的 Web 应用程序已经使用 API 和 JWT 进行常规用户身份验证。
解决方案
许多大型 API 遵循“OpenApi”标准,这有助于使任何开发人员都易于理解您的 API。您可以严格遵循这一点,但即使您不尝试实现一些基本功能,人们也将能够快速使用您的 API。
例如:以应有的方式使用 GET、POST、PUT、DELETE。听起来很简单,但我见过许多实现,其中 GET 用于每个请求。这当然有效(如果您以这种方式构建它),但更容易犯错误并且您需要比必要更多的端点。
另外:用户清除端点的名称和结构。
api.website.com/tickets/[ID 例如。12]
api.website.com/orders/[ID 例如。第354章]
现在,如果作为开发人员,我想获得一张 ID 为 76 的发票……我现在可以猜到端点:api.website.com/invoices/76
如果我想获取我使用的数据 GET api.website.com/invoices/76
如果我想更新发票,我使用 PUT api.website.com/invoices/76
使用的来源:
https://swagger.io/blog/api-design/api-design-best-practices/ https://swagger.io/resources/articles/best-practices-in-api-documentation/ https://blog. mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/
推荐阅读
- python - 重新启动运行时后模型加载得到不同的结果
- json - pandas to_json , django 和 d3.js 用于可视化
- oracle - Oracle v19:正在进行的事务可以长时间阻止对相关表的并发删除吗?
- javascript - 如何通过formdata将值附加到模型中对象内的嵌套键
- c# - 如何在 Index.razor 页面上为 Blazor 使用谷歌字体
- php - Wordpress:PHP 警告:sprintf():参数太少
- reactjs - 更改 Material UI 的自动完成组件时如何获取特定值
- python - Python docx - 一行中的多种颜色
- azure - IFeatureManager.IsEnabledAsync() 总是返回相同的(缓存的)值
- javascript - 在 ASP.net 中启动回发之前等待一个承诺