Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >webservice随记

webservice随记

作者头像
用户1141560
发布于 2017-12-26 08:12:27
发布于 2017-12-26 08:12:27
2.4K0
举报
文章被收录于专栏:西安-晁州西安-晁州

WebService:跨平台、系统、跨语言间相互调用 CXF: Axis(Apache)-> Axis2(Apache) XFire -> CXF(Celtrix + XFire)(Apache) XFire —— WebService框架 Celtrix —— ESB框架,Enterprise Service Bus,即企业服务总线 SOA(面向服务的架构) service1、service2、service3 。。。所有组件都是“即插即用”的,每个组件提供一种服务 IBM提倡面向SOA架构,希望以"组装电脑"的方式来开发软件 1、提供各种服务的组件(WebService) 2、企业服务总线(ESB) CXF号称是SOA框架 CXF内置一个Jetty Web服务器,优于Tomcat ----------------------------------------------------------------------------- 使用CXF开发WebService服务端: /*************每个WebService组件需要2个部分,接口和实现类*************/ 1、开发一个WebService业务接口 该接口必须使用@WebService修饰 2、开发一个WebService实现类 该实现类也要用@WebService修饰 -> @WebService(endpointInterface="org.cxf.ws.HelloWorld",serviceName="HelloWorldWs") 最终web页面里面生成的如下: ----------------------------------------------------------------------------------------------------------- This XML file does not appear to have any style information associated with it. The document tree is shown below. <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01.  --> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01.  --> <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.ws.cxf.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://impl.ws.cxf.org/" name="HelloWorldWs"> <import namespace="http://ws.cxf.org/" location="http://127.0.0.1/helloWorldWs?wsdl=1"/> <binding xmlns:ns1="http://ws.cxf.org/" name="HelloWorldWsPortBinding" type="ns1:HelloWorld"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="sayHi"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="HelloWorldWs"> <port name="HelloWorldWsPort" binding="tns:HelloWorldWsPortBinding"> <soap:address location="http://127.0.0.1/helloWorldWs"/> </port> </service> </definitions> ------------------------------------------------------------------------------------------------------------- 3、发布WebService 使用endpoint类的静态方法来发布Web Service ----------------------------------------------------------------------------------- 使用CXF开发web客户端 1、调用CXF提供的wsdl2java工具,根据wsdl文档生成相应的java代码——cmd中使用命令:wsdl http://127.0.0.1/helloWorldWs?wsdl wsdl = web service definition language即web服务描述语言 任何语言实现了web service,都需要暴露一个wsdl文档 2、找到wsdl2java所生成的类中,一个继承了service接口的类 该类的实例可当成工厂来使用 3、调用service子类实例的getXxxPort方法,返回一个远程Web Service的代理 形参、返回值 1、当形参、返回值的类型都是String基本数据类型的时候,CXF可以轻松处理 2、当形参、返回值类型是JavaBean式的集合类、List集合、数组等时,CXF可以处理? CXF也可以很好地处理 3、还有一些像Map、非JavaBean式的复合类,CXF是处理不了的 Web Service三个技术基础: 1、WSDL   Web Service Definition Language -------------------------------------------------------------------------- xml里面的两个重要属性: targetNamespace,相当于java里的package xmlns命名空间,相当于java里面的import WSDL文档: 1、web service接口 <types>...</types> <message name="sayHi">...</message> <message name="sayHiResponse">...</message> <message name="getCatsByUser">...</message> <message name="getCatsByUserResponse">...</message> <portType name="HelloWorld">...</portType> types元素,该元素内容就是Schema文档 2N个message元素(N为服务端下的方法数量) portType元素,包含N个operation子元素(每个operation定义一个WS操作——方法) (mainOccurs="0",表示出现0到1次,maxOccurs="unbounded",表示未定、无数次) 2、web service实现 binding元素,包含2N个operation元素 service元素,包含port子元素——指定指定Web Service绑定的地址 -------------------------------------------------------------------------- 2、SOAP  Simple Object Access Protocol简单对象访问协议 3、UDDI --------------------------------------------------------------------------- <xs:complexType name="sayHi"> <xs:sequence> <xs:element name="arg0" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="sayHiResponse"> <xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="getCatsByUser"> <xs:sequence> <xs:element name="arg0" type="tns:user" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="user"> <xs:sequence> <xs:element name="address" type="xs:string" minOccurs="0"/> <xs:element name="id" type="xs:int" minOccurs="0"/> <xs:element name="name" type="xs:string" minOccurs="0"/> <xs:element name="pass" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="getCatsByUserResponse"> <xs:sequence> <xs:element name="return" type="tns:cat" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="cat"> <xs:sequence> <xs:element name="color" type="xs:string" minOccurs="0"/> <xs:element name="id" type="xs:int" minOccurs="0"/> <xs:element name="name" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> --------------------------------------------------------------------------------------- 一次Web Service调用——其实并不是方法调用,而是发送SOAP消息(即XML文档片段),CXF调用的本质: 1、客户端把需要调用的参数,转换为xml文档片段(SOAP消息,input消息) ——该片段必须符合wsdl定义的格式 2、客户端通过网络,把xml文档片段传给远程服务端 3、服务器接收到xml文档片段 4、服务端解析xml片段,提取其中数据,并把数据转换为调用web service所需要的参数或对象 5、服务端执行方法 6、服务端把执行方法得到的返回值又转换生成为xml文档片段(SOAP消息,output消息) 7、服务端通过网络把xml片段传给客户端 8、客户端接收到xml文档片段 9、客户端解析xml片段,提取其中数据,并把数据转换为调用web service的返回值 从上面的调用本质来看,要一个语言支持web service,唯一的要求是: 该语言必须支持xml文档的解析、生成、支持网络传输。 所以web service支持跨平台、跨语言(本质:以xml文档为基础的数据交换) 所有的运行是在server端,client端只是发送、解析、封装、转换数据 --------------------------------------------------------------------------------------- 简单来讲,wsdl描述了web service包含了如下3个方面: ** WHAT:该web service包含什么操作 ** HOW:该web service应该怎么调用 ** WHERE:该web service的服务地址(调用地址) /****************************************************************************** 只要得到Web Service的wsdl文档,接下来程序就可以调用Web Service ******************************************************************************/ CXF开发中,遇到系统无法自动处理的类型时,需要特殊处理: 处理思路是要提供一个转换器,该转换器负责把CXF搞不定的类型转换为CXF搞的定的类型 1、使用@XmlJavaTypeAdapter修饰无法处理的类型 使用该Annotation时,value值指定一个转换器类 该转换器就是完成类型之间的转换 2、实现自己的转换器,实现转换器时需要开发一个CXF可以搞定的类型 WebService的三个技术基础: 1、WSDL Web Service接口: 1、types(标准的Schema) 2、2N的message 3、portType:N个operation Web Service实现: 1、binding元素:N个更详细的operation 2、service:指定web service的服务地址 2、SOAP 根元素:Envolope: Header元素+Body元素 默认情况下,Header元素不是强制出现的,可以在Header中放置用户名、密码等信息。 如果使用正确的话,Body元素内容应该遵守WSDL所要求的格式,如果调用错误,Body元素内容就是Fault子元素。 Web Service急需解决的问题?如何收钱?——如何进行权限控制 解决思路: 服务端要求客户端发来的input消息里面必须携带用户名、密码信息,如果没有或者不正确,则拒绝访问 (如果不用CXF等框架,则SOAP消息的生成、解析等都要通过程序来控制,无论是添加用户名、密码或者提取用户名、密码等信息都可由程序代码来完成) 如果使用CXF框架,则SOAP消息的生成、解析等都是通过CXF框架来完成。 为了让程序猿能够访问并修改CXF框架所生成的xml(SOAP消息),CXF提供了拦截器。 服务端添加拦截器: 1、获取服务端Endpoint的publish的方法返回值 2、调用该方法的getInInterceptors()、getOutInterceptors()方法来获取In、Out拦截器列表,接下来再添加拦截器即可 客户端添加拦截器: 1、调用ClientProxy的getClient(hw)方法,该方法以远程web service的代理为参数,返回值为Client对象 2、调用client对象的client.getInInterceptors().add(e)、client.getOutInterceptors().add(e)方法添加拦截器 HelloWorldWs factory = new HelloWorldWs(); HelloWorld hw = factory.getHelloWorldWsPort();//此处返回的只是远程web service的代理 Client client = ClientProxy.getClient(hw); client.getInInterceptors().add(e); client.getOutInterceptors().add(e); 自定义拦截器: ->需要实现Interceptor接口,实际一般直接继承AbstractPhaseInterceptor抽象类 public Class AuthInterceptor extends AbstractPhaseInterceptor<SoapMessage>{ public AuthInterceptor(){ //显示调用父类的有参构造器,一旦显示调用父类构造器之后,程序将不会隐世调用父类无参构造器 super(Phase.PRE_INVOKE); //该拦截器将会在"调用之前"拦截SOAP消息 } //需要实现handleMessage方法,其形参即为被拦截到的Soap消息msg //一旦程序获得了Soap消息,剩下的事情就可以解析Soap消息或者修改SOAP消息 @Override public void handleMessage(SoapMessage msg) throws Fault{ System.out.println(msg); } }  CXF与Spring整合方式一(暴露本地web service接口) 在传统的javaEE的基础上,添加一层Web Service层。 此时的JavaEE应用就可以向外暴露web service,这样就允许任何平台、任何语言来调用这个javaEE 在传统SSH项目基础上添加web service步骤(注意要让struts2放行所有的web service请求): 1、复制CXF的jar包,spring的jar包 2、在Web.xml文件中配置CXF的核心控制器 <!-- 下面的配置表明所有来自/webservice/*请求,都交给CXFServlet处理 --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/webservice/*</url-pattern> </servlet-mapping> 3、在spring配置文件中,导入CXF提供Schema + xml配置文件 xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="... http://cxf.apache.org/jaxws  http://cxf.apache.org/schemas/jaxws.xsd" ps:web应用的类加载路径有两类: 1、WEB-INF/classes目录 2、WEB-INF/lib目录 <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 4、在spring配置文件中使用jaxws:endpoint元素来暴露web service <!-- implementor指定webservice的服务提供者,支持两种形式: A、直接给定服务提供者的类名即接口实现类 B、设置为容器中的一个bean(依赖注入),要在bean的id前加一个#号 --> A:  <bean id="userService" class="org.UserService"></bean> <jaxws:endpoint implementor="org.xxx.Class" address="/webservice"> </jaxws:endpoint> B: <bean id="userService" class="org.UserService"></bean> <bean id="HelloWorldWs" class="org.java.HelloWorldWs"  p:us-ref="userService" /> </bean> <jaxws:endpoint implementor="#HelloWorldWs" address="/webservice"> </jaxws:endpoint> 5、添加服务端拦截器 在jaxws:endpoint里面添加jaxws:inInterceptors拦截器 <jaxws:endpoint id="helloWorld" implementor="#HelloWorldWs" address="/webservice"> <jaxws:inInterceptors>   <bean class="SomeInterceptors" /> <ref bean="AnotherInterceptors" /> </jaxws:inInterceptors> </jaxws:endpoint> CXF与spring整合方式二(调用远程web service) 直接调用远程web service代理对象的方法进行操作 1、让我们的action以来远程web service的接口 2、复制CXF的jar包,spring的jar包,struts的jar包,以及整合包 3、在spring配置文件中,导入CXF提供Schema + xml配置文件 4、在spring配置文件中使用jaxws:client元素来配置远程web service代理 5、添加客户端拦截器 在jaxws:client里面添加jaxws:inInterceptors拦截器 <jaxws:client id="xxx" serviceClass="xxx" address="xxx" > </jaxws-client>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python访问WebService接口
1)安装Sud库 https://fedorahosted.org/suds/ 下载 tarball 2)示例代码如下:
py3study
2020/01/07
2.1K0
java调用WebService(一)
因工作需要和一个Sap相关系统以WebService的方式进行接口联调,之前仅听过这种技术,但并没有实操过,所以将本次开发相关的踩坑进行记录
matinal
2023/10/13
8080
利用spring-ws 现实soap webservice服务
背景:有的系统还用soap协议来做webservice.特别要和他们对接的时候。我们需要实现一套。 今天说说,利用spring-ws来(部署,调用)webservcie,能很好的和主流架构(spring-mvc)结合。 参考资料,官方文档https://docs.spring.io/spring-ws/docs/3.0.0.RELEASE/reference/ spring-ws像spring-mvc一样,在集成到web项目时,前端有个servlet分发请求消息的概念。 这个servlet接受soap
技术蓝海
2018/04/26
6K0
利用spring-ws 现实soap webservice服务
基于Spring + CXF框架的Web Service
1、用CXF编写基于Spring的Web service,也是需要分为Server服务器端、Client客户端的。
别先生
2020/12/01
1.2K0
基于Spring + CXF框架的Web Service
WebService入门初使用(二)调用WebService服务
上一节记录完WebService的创建,鉴于篇幅所致,将调用部分单独拿到本节,所调用WebService服务基于上一章节内容。
WindCoder
2018/09/20
1.7K0
WebService入门初使用(二)调用WebService服务
WebService客户端调用的5种常见方式
到此一个简单的webservice服务端项目就搭建完成了,这里我在application.properties文件中把端口改成8081:
科技新语
2024/11/21
5080
WebService客户端调用的5种常见方式
[亲测可用]springBoot调用对方webService接口的几种方法示例
平常我们开发调用接口一般会用到几种数据格式,比如有restful的,这个是目前最流行的,也是最简单开发的,还有一种就是webservice数据格式,这个应该是很久以前的一些项目是用的这种
小小鱼儿小小林
2020/06/29
14.3K0
远程调用服务框架-CXF(WebServic)
本文介绍了如何利用阿里巴巴的开源项目Dubbo,实现高性能的服务化架构。首先介绍了Dubbo的基本概念和架构设计,然后详细讲解了如何使用Dubbo搭建服务化架构,并总结了在实践过程中需要注意的要点。本文对于实际项目中使用Dubbo搭建服务化架构具有一定的参考价值。
李家酒馆酒保
2017/12/27
1.7K0
远程调用服务框架-CXF(WebServic)
使用CXF调用Webservice接口添加SoapHeader
服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!指服务端程序和客户端程序可以在不同的操作系统上运行。
JQ实验室
2023/01/12
2.2K0
WebService入门学习二
答:为了在webservice请求过程中,能动态操作请求和响应数据,,CXF设计了拦截器。
别先生
2020/12/01
1K0
WebService入门学习二
cxf webservice整合spring 原
     前端建模:CXF 提供了前端建模的概念,允许您使用不同的前端 API 来创建 Web 服务。API 允许您使用简单的工厂 Bean 并通过 JAX-WAS 实现来创建 Web 服务。它还允许您创建动态 Web 服务客户端。     工具支持:CXF 提供了用于在 Java Bean、Web 服务和 WSDL 之间进行转换的不同工具。它提供了对 Maven 和 Ant 集成的支持,并无缝地支持 Spring 集成。     RESTful 服务支持:CXF 支持代表性状态传输(Representational State Transfer,RESTful )服务的概念,并支持 Java 平台的 JAX-RS 实现。(本系列的第 2 部分将提供有关 RESTful 服务的更多信息。)     对不同传输和绑定的支持:CXF 支持不同种类的传输,从 XML 到逗号分隔值 (CSV)。除了支持 SOAP 和 HTTP 协议绑定之外,它还支持 Java Architecture for XML Binding (JAXB) 和 AEGIS 数据绑定。     对非 XML 绑定的支持:CXF 支持非 XML 绑定,例如 JavaScript Object Notation (JSON) 和 Common Object Request Broker Architecture (CORBA)。它还支持 Java 业务集成(Java Business Integration,JBI)体系架构和服务组件体系架构(Service Component Architecture,SCA)。     code first 或者 xml first  : 支持使用code first 或者 xml first 的方式来创建web服务。  一  借助 annotation 创建独立启动的web 服务。         准备: 新建工程 导入需要的jar 包:                      依赖的包:                             commons-logging-1.1.jar                             geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)                             geronimo-annotation_1.0_spec-1.1.jar (JSR 250)                             geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)                             geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)                             geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)                             jaxb-api-2.1.jar                             jaxb-impl-2.1.6.jar                             jaxws-api-2.1.jar                             jetty-6.1.5.jar                             jetty-util-6.1.5.jar                             neethi-2.0.jar                             saaj-api-1.3.jar                             saaj-impl-1.3.jar                             stax-api-1.0.1.jar                             wsdl4j-1.6.1.jar                             wstx-asl-3.2.1.jar                             XmlSchema-1.2.jar                             xml-resolver-1.2.jar                         spring jar 包, 用来支持xml配置:                             aopalliance-1.0.jar          
尚浩宇
2018/08/17
7830
Java webservice详解「建议收藏」
  webservice 即 web 服务,因互联网而产生,通过 webservice 这种 web 服务,我们可以实现互联网应用之间的资源共享,比如我们想知道 手机号码归属地,列车时刻表,天气预报,省市区邮政编码等信息,由于我们自己的数据库中并没有这些信息,那么我们可以调用第三方提供的 webservice服务,获取这些信息;
全栈程序员站长
2022/09/14
3.5K0
Java webservice详解「建议收藏」
使用JQuery、Ajax来调用WebService服务 基于Spring + CXF框架的Web Service
1、在之前的基础上修改的,如果想使用JQuery、Ajax来调用WebService服务,必须需要先获取到请求的参数值,我的参数值是下面的这部分,如何获取到这参数值呢,只需要在客户端配置出拦截器即可,后台打印的参数,然后配置到自己需要的地方即可。
别先生
2020/12/01
2.1K0
使用JQuery、Ajax来调用WebService服务
    


基于Spring + CXF框架的Web Service
记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题
Unable to find config file. Creating new servlet engine config file: /WEB-INF/server-config.wsdd
JQ实验室
2022/02/09
5820
记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题
WebService: SpringBoot集成WebService实践二
该篇为上一篇的延伸,上一篇知识简单介绍了WebService 的使用,该篇会对代码中模块及功能进行详细介绍,以作对WebService 进一步的理解。
Freedom123
2024/03/29
5610
WebService: SpringBoot集成WebService实践二
WebService入门学习一
参考:https://blog.csdn.net/c99463904/article/details/76018436
别先生
2020/12/01
1.8K0
WebService入门学习一
Java小白翻身 - webservice教程2
来一个HelloWorld,SpringBoot发布WebService可简单啦。
剽悍一小兔
2021/07/20
7960
Java小白翻身 - webservice教程2
PHP Webservice的发布与调用
发布出来的*.wsdl文件,其实是一个xml格式的文件,生成这个文件可以通过第3方软件,如ZendStudio 就可以生成。
Java架构师必看
2021/03/22
1.3K0
PHP Webservice的发布与调用
cxf实现webservice_产品框架
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 跨编程语言和跨操作平台 就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 远程调用 就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银行服务器上。再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以WebService服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率。 服务端:把公司内部系统的业务方法发布成WebService服务,供远程他人调用 客户端:调用别人发布的WebService服务 常见的远程调动技术: 1) Socket 套接字 TCP/IP UDP 2) WebService 3) http 调用 4) RMI( 远程方法调用 ) Hessian 框架(二进制RPC协议传输数据) WebService 的特点: 1) 跨平台,跨语言 2) W3C(万维网联盟)制定的标准 3) 可以穿透防火墙(因为 soap 协议是基于 HTTP 协议) SOAP 协议(简单对象访问协议Simple Object Access Protocol): WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议 SOAP协议 = HTTP协议 + XML数据格式 WSDL(Web Services Description Language)就是基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。
全栈程序员站长
2022/09/30
1.5K0
cxf实现webservice_产品框架
cxf框架调用webservice_webservice json
Ant做为一种工具已经广泛被使用,并且历史悠久。 使用ant的内置命令,可以编译java源文件(javac),运行java文件(java),给class文件打包(jar、war、ear), 也可以创建(mkdir)、删除(del)、拷贝(copy),甚至可以使用ant执行sql文件。 由于ant是用xml语言写成的文件,并取默认名为build.xml文件。 所以,今后大家应该在见到名为build.xml文件时知道这是一个ant的文件。
全栈程序员站长
2022/09/29
1.9K0
cxf框架调用webservice_webservice json
相关推荐
Python访问WebService接口
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档