jsobeslav / webproxy
WebProxy 是一个 PHP 库,它提供了一个统一的接口,用于与标准第三方网络服务进行通信,无论是 API 还是普通网站。
0.1.6
2019-08-05 12:55 UTC
Requires
- php: >=7.1
- consistence/consistence: ^1.1
- guzzlehttp/guzzle: ^6.3
- symfony/css-selector: ^4.1
- symfony/dom-crawler: ^4.1
Requires (Dev)
- codeception/codeception: ^2.5
- phpmd/phpmd: ^2.6
- squizlabs/php_codesniffer: ^3.4
README
- WebProxy 是一个 PHP 库,它提供了一个统一的接口,用于与标准第三方网络服务进行通信,无论是 API 还是普通网站。
- 它提供了解析 REST API 的 JSON 响应,从网站抓取和爬取 HTML 代码,或调用 SOAP 服务的方法。
- 为了澄清某些潜在的误解,请参阅以下术语章节。
包含的库/依赖
- 对于 HTTP:
guzzlehttp/guzzle
| http://docs.guzzlephp.org/en/stable/ - 对于 HTML 爬取:
symfony/dom-crawler
| https://symfony.com.cn/doc/current/components/dom_crawler.html - 对于 SOAP:本地
SoapClient
| https://secure.php.net/manual/en/class.soapclient.php
用法
示例
- 有关实现示例,请参阅
demo
文件夹。
一般指南
- 创建扩展合适子类的 Service 类
- 选项有
RestApi
(用于 REST API)Website
(用于通过网站爬取)SoapService
(用于 SOAP API)
- 填写缺失的接口方法
getUri()
:返回服务所在的基础 URI。- 对于
HttpService
,它是基础 URI。例如:return 'https://jsonplaceholder.typicode.com';
- 对于
SoapService
,它是 WSDL URI。例如:return 'https://soapexample.com?wsdl';
- 对于
- 选项有
- 创建扩展选定 Service 类型适当子类的 Endpoint 类
- 选项有
RestResource
(用于RestApi
)Webpage
(用于通过Website
爬取)SoapEndpoint
(用于SoapService
)
- 填写缺失的接口方法和可选类变量
getServiceClass()
:返回适当服务的类。例如:return JsonPlaceholderRestApi::class;
getRequestName()
:返回端点执行的请求规范。- 对于
HttpService
,它是基础 Service URI 后附加的 URI。例如:return '/posts';
- 对于
SoapService
,它是方法名。例如:return 'getPosts';
- 对于
$supportedMethods
:HttpServices 的可选白名单。例如:return [Method::POST];
- 编写方法以过滤结果
- 对于
RestResource
,利用解析的数据对象:return $this->getResponseData()['id'];
- 对于
Websites
,利用 Symfony DOM Crawler:return $this->getCrawler()->filter('.address h3')->text();
- 对于
SoapEndpoints
,利用解析的数据:return $this->getResponseData()['result'];
- 对于
- 选项有
- 初始化
WebProxy
对象(new WebProxy()
)和所需的端点(new ExampleResource()
) - 通过其方法之一将自定义端点的新实例传递给
WebProxy
get
、post
、put
、delete
作为 HTTP 请求的缩写httpRequest
用于自定义 HTTP 请求call
作为 SOAP 请求的缩写soapRequest
用于自定义 SOAP 请求
- 对于特定目的,您可能需要使用具有自定义
Request
对象的httpRequest
和soapRequest
方法- 例如,默认 POST 正文类型是表单数据,或 Multipart(如果随它发送文件)。要发送 JSON,请使用
Request::create(Method::POST)->withJsonBody(['array','content'])
- 将
Request
的实例作为第二个参数传递到提到的方法中
- 例如,默认 POST 正文类型是表单数据,或 Multipart(如果随它发送文件)。要发送 JSON,请使用
- 使用返回的修改后的端点实例返回解析的数据
使用的术语
Client
:负责在位于Service
的Endpoint
上执行请求并获取响应体的类HttpClient
:包含一个Guzzle实例以执行所有请求SoapClient
:将请求传递给每个独立的SoapService
的自己的SoapClient
实例(原生)
Service
:位于单个域上的端点集合。HttpService
:可通过HTTP请求访问的服务RestApi
:包含多个RestResource
的REST APIWebsite
:包含多个Webpage
的网站
SoapService
:可通过SOAP调用访问的服务
Endpoint
:Service
的一个特定功能HttpEndpoint
:HttpService
上的特定URIRestResource
:RESTful的HttpEndpoint
Webpage
:返回HTML的HttpEndpoint
SoapEndpoint
:SoapService
的方法