加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

RESTClient调试RESTful Webservice

发布时间:2020-12-16 22:55:54 所属栏目:安全 来源:网络整理
导读:本文讨论用火狐浏览器调试RESTful Webservice 1、下载RESTClient插件 点击添加组件,搜索RESTClient,点击下载。 2、发布一个RESTful Webservice应用程序 CXF和Spring完美集合, 1)web.xml配置,配置拦截webservice请求映射 servletservlet-nameCXFServlet/


本文讨论用火狐浏览器调试RESTful Webservice

1、下载RESTClient插件

点击添加组件,搜索RESTClient,点击下载。


2、发布一个RESTful Webservice应用程序

CXF和Spring完美集合,


1)web.xml配置,配置拦截webservice请求映射

<servlet>
	<servlet-name>CXFServlet</servlet-name>
	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>CXFServlet</servlet-name>
	<url-pattern>/rest/*</url-pattern>
</servlet-mapping>


2)spring.xml配置,发布webservice

<!--RESTful schema文件-->
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
http://cxf.apache.org/jaxrs	http://cxf.apache.org/schemas/jaxrs.xsd

<!-- 服务bean -->
<bean id="mailService" class="com.deppon.uums.mail.server.service.impl.MailService" />

<!-- 使用restful方式服务 -->
<jaxrs:server id="uumsMailService" address="/ws">
	<jaxrs:serviceBeans>
		<ref bean="mailService" />
	</jaxrs:serviceBeans>
	<jaxrs:extensionMappings>
		<entry key="json" value="application/json" />
		<entry key="xml" value="application/xml" />
	</jaxrs:extensionMappings>
	
	<jaxrs:providers>
		<!-- json解析器 -->
		<bean class="org.apache.cxf.jaxrs.provider.JSONProvider" />
	</jaxrs:providers>
</jaxrs:server>

3)webservice接口,用于被外界调用的接口

/**
 * 
 * <p>邮件服务接口</p>
 * @author Stephen
 * @date Mar 30,2015
 */
@Path("/mail")
public interface IMailService extends IService {
	
	/**
	 * 
	 * <p>发送邮件</p>
	 * @author Stephen
	 * @since 1.0
	 * @param mailInfo 邮件信息参数,
<span style="white-space:pre">	</span> * json格式:{"sender":"ruixiaolei@deppon.com","recievers":["W01130603@deppon.com","W01140606@deppon.com"]}
	 * @return 返回处理后的结果,成功和失败的列表
	 * <li>sucess 邮件成功
	 * <li>failed 邮件失败
	 */
	@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) 
	@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
	@POST  //方法为POST 
	@Path("/sendmail")
	public String sendMail(String mailInfo);
}

5)webservice接口实现类,用于具体业务逻辑实现

package com.deppon.uums.mail.server.service.impl;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import net.sf.json.JSONObject;

import org.apache.commons.lang.StringUtils;
import org.springframework.transaction.annotation.Transactional;

import com.deppon.uums.mail.server.dao.impl.MailDao;
import com.deppon.uums.mail.server.service.IMailService;
import com.deppon.uums.mail.shared.domain.DeptEntity;
import com.deppon.uums.mail.shared.domain.MailRequestEntity;
import com.deppon.uums.mail.shared.domain.SenderEntity;


/**
 * <p>邮件服务实现类</p>
 * 记录日志信息,以后再做,若果有要求的话,例如提供页面查看发送邮件的信息,每天发邮件数量,峰值、失败原因、服务器压力等。
 * @author Stephen
 * @date Mar 31,2015
 * @since 1.0
 */

@Transactional
public class MailService implements IMailService {

	@Resource
	private MailDao mailDao;
	
	private static final String OFFICE_NAME = "办公室";
	private static final String NOT_PERMITTED = "不能跨系统发邮件,例如人力资源本部人员不能群发给企业发展办公室任一部门!";
	private static final String NOT_MATCHED = "邮箱不符合规则,邮箱应该是xxx@deppon.com等!";
	private static final String NOT_FOUND = "在UUMS系统里查不到其邮件,可能历史原因,请联系IT热线手动给其加上邮件信息!";
	
	
	@Override
	public String sendMail(String mailInfo) {
		
		/**
		 * 处理后的邮件信息
		 */
		String mailMessage = "";
		
		String sender = "";  //发件人
		List<String> recievers = new ArrayList<String>();  //收件人列表
		
		List<String> empMail = new ArrayList<String>();  //个人邮件
		List<String> deptMail = new ArrayList<String>();  //部门邮件
		
		Map<String,List<String>> message = new HashMap<String,List<String>>();
		List<String> success = new ArrayList<String>();
		List<String> failed = new ArrayList<String>();
		
		if (StringUtils.isNotBlank(mailInfo)) {
			//将json数据解析成对象
			JSONObject object = JSONObject.fromObject(mailInfo);
			MailRequestEntity mailEntity = (MailRequestEntity) JSONObject.toBean(object,MailRequestEntity.class);
			sender = mailEntity.getSender();
			recievers = mailEntity.getRecievers();
			
			//对收件人列表进行过滤,把个人过滤掉
			for(String mail : recievers){
				if (!mail.contains("@deppon.com")) {  //不是德邦内部邮箱不允许发邮件
					failed.add(mail + ":" + NOT_MATCHED);
				} else {
					if (mail.startsWith("W")) {
						deptMail.add(mail);
					} else {
						empMail.add(mail);
					}
				}
			}
			
			//从数据库查找发件人信息
			SenderEntity senderDept = mailDao.queryBySender(sender);
			//从数据库查找部门收件人列表
			List<DeptEntity> deptList = mailDao.queryByRecivers(deptMail);
			
			//发件人邮件在UUMS系统里可能查不到,历史原因
			if(senderDept == null){
				failed.add(sender + ":" + NOT_FOUND);
				message.put("failed",failed);
			} 
			
			if (senderDept != null && deptList != null) {
				String empDeptName = senderDept.getDeptName();
				String empDeptId = senderDept.getDeptId();
				//发送人的部门是办公室,则发送人的权限和办公室部门的上级部门拥有相同的权限
				if (empDeptName.contains(OFFICE_NAME)) {
					empDeptId = senderDept.getParentId();
				} 
				
				for(DeptEntity dept : deptList) {
					String deptSeq = dept.getDeptSeq();
					deptSeq = deptSeq.substring(1,deptSeq.length()-1);
					List<String> recDepts = Arrays.asList(deptSeq.split(".")); //部门收件人部门id列表
					if (recDepts.contains(empDeptId)) {  //如果收件人的序列包含发件人,则可以发送
						success.add(dept.getDeptEmail() + ":" + dept.getDeptName());
					} else {
						failed.add(dept.getDeptEmail() + ":" + dept.getDeptName() + ":" + NOT_PERMITTED);
					}
				}
				success.addAll(empMail);  //把个人邮箱列表添加到成功集合里
				message.put("success",success);
				message.put("failed",failed);
			} 
			
			//将处理结果返回给调用者
			mailMessage = JSONObject.fromObject(message).toString();
		} 
		
		return mailMessage;
	}
	
	
}

6)webservice测试,使用代码测试,启动tomcat服务器

@Test
public void testMail() throws Exception {
	
	String mailInfo = "{'sender':'ruixiaolei@deppon.com'," +
			"'recievers':['W011302050602@deppon.com','W01130603@deppon.com'," +
			"'W01140606@deppon.com','W01140518@deppon.com']}";
	
	WebClient client = WebClient.create("http://localhost:8088/uums-mail/rest/ws/");
	String result = client.path("mail/sendmail").
			accept(MediaType.APPLICATION_JSON).post(mailInfo,String.class);
	if (StringUtils.isNotBlank(result)) {
		System.out.println(result);
	}
}


得到结果:

{"failed":["W011302050602@deppon.com:宁波鄞州区姜山营业部:不能跨系统发邮件,例如人力资源本部人员不能群发给企业发展办公室任一部门!"],

"success":["W01140606@deppon.com:郑州转运中心","W01130603@deppon.com:郑州大区","W01140518@deppon.com:安徽北部大区"]}


7)使用RESTClient插件测试,得到的结果如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读