枚举的适用场景:表示错误码,业务状态(用户状态、订单状态),业务种类(权限、分类)。
在一些REST风格的API中,需要返回错误码与对应的错误信息:
| Error code | HTTP status code | User message |
| ServerBusy | Service Unavailable (503) | The server is currently unable to receive requests. Please retry your request. |
使用带构造参数的枚举可以解决这个问题,并带来良好的可维护性。
/**
* Created by huangyp on 2014/11/11.
*/
public enum ErrorCodeEnum {
ServerBusy(503, "The server is currently unable to receive requests. Please retry your request.");
private Integer statusCode;
private String userMessage;
ErrorCodeEnum(Integer _code, String _message) {
userMessage = _message;
statusCode = _code;
}
/** accessor method **/
}
在Web页面中用<select>标签展示、编辑。
<c:set var="productTag" value="<%=EcProductTag.fromString(product.getTag())%>" />
<c:set var="productTags" value="<%=EcProductTag.values()%>" />
<select name="tag" id="tag">
<c:forEach items="${productTags}" var="tag">
<option value="${tag}" <c:if test="${tag==productTag}">selected</c:if>>${tag.text}</option>
</c:forEach>
</select>
/**
* Returns the {@link EcProductTag} enum for the given {@link String} value.
* @param str
* @return
*/
public static EcProductTag fromString(String str) {
try {
return EcProductTag.valueOf(StringUtils.upperCase(str));
} catch (Exception e) {
return GENERAL;
}
}
本文深入探讨了枚举在处理REST风格API中的错误码与错误信息的实用性和可维护性,通过具体实例展示了如何使用带构造参数的枚举来解决API错误反馈的问题,并介绍了在Web页面中如何利用枚举进行错误展示与编辑。
684

被折叠的 条评论
为什么被折叠?



