如何使用外部 api 在 Laravel 应用程序中工作?

Posted

技术标签:

【中文标题】如何使用外部 api 在 Laravel 应用程序中工作?【英文标题】:How to work in Laravel app with external api? 【发布时间】:2020-08-11 22:45:34 【问题描述】:

在我的 Laravel 5.7/mysql 应用程序中,我需要制作外部 api 来从外部读取一些数据 带有获取请求的应用程序并通过发布请求将一些数据写入我的数据库。

有哪些工具/脚本可以解决这个问题以及如何确保这些请求安全?

修改: 感谢您的反馈,但看起来我的问题很糟糕 外部应用程序(我不知道它是用什么写的)需要从我的应用程序中读取数据 并将数据写入我的 Laravel 5 应用程序。

在本地开发时如何测试这些请求? 看起来我必须在提供的链接中使用 Guzzle? 为了安全起见,我应该采取哪些步骤?

谢谢!

【问题讨论】:

***.com/questions/22355828/… 使用 Guzzle 请看修改 我认为您想向外部 api 发出请求以获取一些数据,并且您想将数据保存到您的数据库中!对 【参考方案1】:

这三个库在您的用例中很受欢迎:

Guzzle Curl zttp

如果数据库是本地的,您可以使用 Eloquent,如果不是,远程连接到该数据库可能会有所帮助。否则,如果您只有 API 访问权限,您应该使用上述库中的八个或任何替代选项来发出您的应用程序可能需要的 HTTP 请求。

安全方面,只要您只是向远程服务器发出请求,建议的方法是将与授权您的请求(如果适用)相关的任何密钥或秘密字符串存储在您的 .env 中,以防止它被提交到您的版本控制系统。不用说总是处理远程 API 可能抛出的任何可能的 HTTP 错误,以防止应用程序端出现任何不需要的错误。

正如 Abir Adak 在评论中提到的,请查看thread 了解更多详情。

更新答案:在MODIFIED部分的情况下,通常你有3个流行的选项,

REST API

This blog post 是为 Laravel 编写的详细演练 This one from Stack Overflow 可以帮助您设计 API This last one 可以帮助您按照其规范开发广泛接受的 API 响应和端点。

GraphQL 可以节省一些时间来开发您的 API,但我建议确保您的 API 的使用者乐于使用此选项。 GraphQ Laravel Package for GraphQL 如果不是必须使用 Laravel,并且您使用的是 PostgreSQL,那么您可能还需要查看 Hasura。

SOAP 对 Laravel 的这个选项知之甚少,只知道使用 C# 和 .net 编码的人更乐意使用这个协议公开他们的 API。在WikiPedia

上阅读更多相关信息

Postman 是测试您的 API 或任何其他 API 的绝佳工具。

【讨论】:

请看修改 谢谢!你觉得laravel.com/docs/5.7/passport 怎么样? @mstdmstd 如果你想授权你的请求,你可以使用 Passport,然后使用个人令牌,例如。但我建议看看laravel.com/docs/7.x/sanctum 或github.com/tymondesigns/jwt-auth 他们可能会更快地为您描述的用例进行配置。

以上是关于如何使用外部 api 在 Laravel 应用程序中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中使用 HTTP 请求的删除方法通过外部 Api 库删除项目

从控制器调用外部 API 函数,LARAVEL 4

使用外部 Laravel 护照流明 api 进行 Laravel 客户端身份验证

如何保护 laravel api 路由免受外部 GET 请求的影响

从 laravel 调用 HTTPS 请求到外部 API

Laravel 5 通过外部 API 对用户进行身份验证