سؤال

أحاول استخدام Jersey لتطوير خدمة ويب REST.متطلباتي هي أن أتمكن من الوصول إلى خدمة الويب وإرجاع البيانات، بناءً على معلمات PatParam التي تم تمريرها.خدمة الويب الخاصة بي حتى الآن هي كما يلي:

@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes({ "application/xml", "application/json", "application/x-www-form-urlencoded" })
@Path("/1.0/people{extension:(.json)*}/{personId:([^/]+?)?}{entityExtension:(.json)*}")
public String getLocation(@PathParam("extension") String extension, @PathParam("personId") String personId,@PathParam("entityExtension") String entityExtension)
{
    if ((personId==null ||personId.equals("")) && (extension == null || extension.equals("")))
        return "No Id, and no extension";
    else
        return "personId= "+personId + ", extension= " + extension+", entityExtension= "+entityExtension;
}

مع وضع الكود أعلاه في الاعتبار، ما أحاول تحقيقه هو ما يلي:

http://localhost:8080/Jersey/RestService/1.0/people.json

يجب إرجاع قائمة بجميع الأشخاص بتنسيق "json" (وبالتالي الامتداد .json)

الآن، أريد أن أكون قادرًا على الحصول على المعلومات الخاصة بشخص معين بمجرد وضع معرف الشخص وإرجاع معلومات الشخص بتنسيق json/xml استنادًا إلى الامتداد:

http://localhost:8080/Jersey/RestService/1.0/people/Mouhammed89.json

باستخدام عنوان URL أعلاه، يجب أن أقوم بإرجاع المعلومات الخاصة بمعرف الشخص:Mouhammed89، وإرجاع المعلومات بصيغة json.

أعلم أن مشكلتي تكمن في التعبيرات العادية التي أستخدمها، لذا سأقدر حقًا المساعدة في إنشائها.

هل كانت مفيدة؟

المحلول

حاوية إيمهو (List) والبند (Person) URL ينبغي التعامل معها بشكل منفصل.ولا تحتاج إلى صريحة .json بادئة للعودة JSON الرد، فقط الشرح في API ينبغي أن يكون المستوى كافيا.

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people") //no need for .json suffix as API only return JSON format
public List<String> allLocations(..){ //jackson etc. will convert return type to json string 
..
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people/{personId: \\d+}")//digits only
public String getLocation(..){ //jackson etc. will convert return type to json string 
..
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top