मेरे पास एक आरईएसटी एपीआई है जो 3 क्वेरी पैरा स्वीकार करती है। जब क्वेरी को किसी भी क्वेरी पैरामीटर के बिना बुलाया जाता है, तो एपीआई निष्पादित करता है और परिणाम देता है। हम क्वेरीपरम को अनिवार्य कैसे बना सकते हैं? सभी पैरामीटर मौजूद हैं या नहीं, यह जांचने के लिए मैं सत्यापन कैसे जोड़ सकता हूं? इसके अलावा, कृपया मुझे सबसे अच्छा तरीका बताएं।जावा जर्सी आरईएसटी सेवाओं में क्वेरीपरैम अनिवार्य कैसे बनाएं?
6
A
उत्तर
0
एक बहुत ही सरल स्तर पर आप सिर्फ HttpServletRequest
इंजेक्षन सकता है और अपने आप की जाँच करें:
@GET
public Response example(@Context HttpServletRequest request,
@QueryParam("name") String name) {
if (null == request.getParameter("name")) {
ResponseBuilder builder = Response.status(404);
return builder.build();
}
// Do something with name
}
या आप AOP का उपयोग कर अधिक व्यापक कुछ लागू कर सकते हैं। Here's और विकल्पों के बारे में एक ब्लॉग पोस्ट।
0
जर्सी बॉक्स से बाहर अनिवार्य पैरामीटर जांच कार्यक्षमता नहीं देता है। हालांकि आप इसे प्राप्त करने के लिए अपनी खुद की एनोटेशन लागू करने जैसे कुछ कर सकते हैं। ,
@Target(value = ElementType.METHOD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Required {
String[] value();
}
तुम भी एक फिल्टर की आवश्यकता नीचे कोड है: नीचे एनोटेशन कोड है
public class RequiredParamResourceFilterFactory implements ResourceFilterFactory {
@Context
private transient HttpServletRequest servletRequest;
private class RequiredParamFilter implements ResourceFilter, ContainerRequestFilter {
private final String[] requiredParams;
protected List<String> parametersValueMissing;
private RequiredParamFilter(String[] requiredParams) {
this.requiredParams = requiredParams;
}
@Override
public ContainerRequest filter(ContainerRequest containerRequest) {
boolean missingMandatoryParameter = false;
List<String> missingParameters = new ArrayList<String>();
List<String> requiredParametersValueMissing = new ArrayList<String>();
List<String> URLParameters = getURLParameters(containerRequest.getQueryParameters());
List<String> methodRequiredParameters = Arrays.asList(requiredParams);
if (methodRequiredParameters != null) {
for (String methodRequiredParam : methodRequiredParameters) {
if (URLParameters == null) {
missingMandatoryParameter = true; //we will check this flag before returning result set to caller
missingParameters.add(methodRequiredParam);
} else if (!URLParameters.contains(methodRequiredParam)) {
missingMandatoryParameter = true; //we will check this flag before returning result set to caller
missingParameters.add(methodRequiredParam);
//Add to required parameters value missing List, only if the parameter is mandatory and value is not provided
// in the URL
} else if (parametersValueMissing.contains(methodRequiredParam)) {
requiredParametersValueMissing.add(methodRequiredParam);
}
}
if (missingMandatoryParameter && requiredParametersValueMissing.size() > 0) {
throw new YourCustomException("Missing Parameters = " + StringHelper.ArrayToString(missingParameters) +
"\nParameter value missing for " + StringHelper.ArrayToString(requiredParametersValueMissing));
} else if (missingMandatoryParameter) {
throw new YourCustomException("Missing Parameters = " + StringHelper.ArrayToString(missingParameters), MisbarErrorCode.VALIDATION_WRONG_INPUT_ERROR, "Customers");
} else if (requiredParametersValueMissing != null &&
requiredParametersValueMissing.size() > 0) {
throw new YourCustomException("Parameter value missing for " + StringHelper.ArrayToString(requiredParametersValueMissing));
}
}
return containerRequest;
}
@Override
public ContainerRequestFilter getRequestFilter() {
return this;
}
@Override
public ContainerResponseFilter getResponseFilter() {
return null;
}
/**
* To fetch the parameters sent to webservice call, these will be used to find if required parameter
* are present or not
*
* @param queryParams the queryparams sent
* @return all the parameters sent in URL
*/
private List<String> getURLParameters(MultivaluedMap<String,String> queryParams) {
parametersValueMissing = new ArrayList<String>();
List<String> arr = new ArrayList<String>();
for(String key:queryParams.keySet())
{
arr.add(key);
if(queryParams.get(key)==null)
parametersValueMissing.add(key);
}
if(!arr.isEmpty())
return arr;
return null;
}
}
@Override
public List<ResourceFilter> create(AbstractMethod am) {
Required required = am.getAnnotation(Required.class);
if(required!=null)
{
return Collections.<ResourceFilter>singletonList(new RequiredParamFilter(required.value()));
}
return null;
}
}
नमूना नीचे दिखाता है कि कैसे यह व्याख्या का उपयोग करने, वेब सेवा नीचे में तो;
@GET
@Produces(MediaType.APPLICATION_JSON+";charset=utf-8")
@Cacheable(isCacheable = true)
@Path("posts/clusters")
@Required({"file_id","count"})
@Timed
public Response getClusters(
@QueryParam("file_id") Integer fileId,
@QueryParam("count") Integer count,
@DefaultValue("-1")@QueryParam("start_time") Long startTime){
;
}
अनिवार्य मानकों वेब सेवा कॉल में नहीं दिया जाता है, तो आप नीचे की तरह एक त्रुटि प्राप्त करते हैं, पैरामीटर ऐसे नाम हैं जो याद कर रहे हैं उल्लेख:
{
message: "Missing Parameters = file_id, count",
errorCode: "600"
}
आशा यह आपके हल करती है file_id और गिनती अनिवार्य मानकों हैं मुसीबत।
संबंधित मुद्दे
- 1. आरईएसटी सेवाओं में सत्र
- 2. जावा आरईएसटी कार्यान्वयन: जर्सी बनाम सीएक्सएफ
- 3. जर्सी आरईएसटी सेवा
- 4. जावा जर्सी
- 5. PowerShell में पैरामीटर अनिवार्य कैसे बनाएं?
- 6. tastypie में कुछ फ़िल्टर अनिवार्य कैसे बनाएं?
- 7. जर्सी (आरईएसटी) उप-संसाधन सीडीआई
- 8. जर्सी आरईएसटी सेवा विधि से ब्राउजर
- 9. क्या जर्सी जावा में रीस्टफुल वेब सेवाओं के विकास के लिए सिर्फ एक ढांचा है?
- 10. वसंत 3.0 आरईएसटी कार्यान्वयन या जर्सी?
- 11. आरईएसटी/जावा
- 12. डब्ल्यूसीएफ आरईएसटी सेवाओं के लिए JSON.NET Serializer
- 13. डब्ल्यूसीएफ आरईएसटी सेवाओं के भीतर सीओआरएस समर्थन
- 14. आरईएसटी सेवाओं पर प्रमाणीकरण टोकन का बिंदु
- 15. जर्सी
- 16. जावा ऑब्जेक्ट्स संग्रह के लिए जर्सी आरईएसटी सेवा से JSON प्रतिक्रिया को deserialize कैसे करें
- 17. जावा जर्सी: बाइट सरणी
- 18. जर्सी
- 19. पोर्टेबल क्लास लाइब्रेरी से आरईएसटी सेवाओं को कैसे कॉल करें?
- 20. जावा एसई 6 से निर्मित वेब सर्वर के साथ जर्सी कैसे चलाएं?
- 21. आरईएसटी
- 22. जर्सी
- 23. डेटा सेवाओं (ओडाटा) में गणना की गई संपत्ति कैसे बनाएं?
- 24. जर्सी
- 25. कैसे जर्सी
- 26. मूल जावा सर्वर कैसे बनाएं?
- 27. जर्सी के लिए जैक्सन का आसानी से उपयोग कैसे करें
- 28. जर्सी सेवा में JSON ऑब्जेक्ट का उपभोग
- 29. एसओएपी आधारित सेवाओं के बजाय आरईएसटी का उपयोग क्यों करेगा?
- 30. अनिवार्य जावा जीयूआई बिल्डिंग ब्लॉक? अर्थात। स्विंग