আমি জার্সি জ্যাকআরএসে কীভাবে সমস্ত ক্যোয়ারী প্যারামিটারগুলি ধরতে পারি?


91

আমি একটি জেনেরিক ওয়েব পরিষেবা তৈরি করছি এবং পরে বিশদকরণের জন্য সমস্ত ক্যোয়ারী প্যারামিটারগুলি একটি স্ট্রিংয়ে দখল করতে হবে। কিভাবে আমি এটি করতে পারব?

উত্তর:


163

আপনি @QueryParam("name")প্রসঙ্গটির মাধ্যমে একটি প্যারাম বা সমস্ত প্যারামের মাধ্যমে অ্যাক্সেস করতে পারেন :

@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

কীটি হল @Context জ্যাক্স-আরএস টিকা , যা অ্যাক্সেস করতে ব্যবহার করা যেতে পারে:

UriInfo, অনুরোধ, এইচটিপিএইচইডারস, সিকিউরিটি কনটেক্সট, সরবরাহকারী


আমরা কি জিইটি দিয়ে ব্যবহার করতে পারি?
ভাল অনুভব করুন এবং

33

অনুরোধ ইউআরআইয়ের আনপারসড ক্যোয়ারী অংশটি UriInfoঅবজেক্ট থেকে পাওয়া যেতে পারে :

@GET
public Representation get(@Context UriInfo uriInfo) {
  String query = uriInfo.getRequestUri().getQuery();
  ...
}

4

গৃহীত উত্তরে আরও কিছু যুক্ত করা হচ্ছে। পদ্ধতিটিতে অতিরিক্ত পরামিতি যুক্ত না করে নিম্নলিখিত উপায়ে সমস্ত ক্যোয়ারী প্যারামিটারগুলি পাওয়া সম্ভব যা সোয়াগার ডকুমেন্টেশন বজায় রাখার সময় দরকারী useful

@Context
private UriInfo uriInfo;

@POST
public Response postSomething(@QueryParam("name") String name) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

রেফ


এটি কাজ করার সময়, আমি এটির প্রস্তাব দেব না। আপনি যদি কোড কার্যকরী বিশুদ্ধ রাখতে পারেন তবে আপনার এটি চেষ্টা করা উচিত - এটি আরও ভাল পদ্ধতির।
শে

4
যদিও কঠোরভাবে সঠিক, আমি প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে লগ করার জন্য একটি সুপারক্লাসের সাথে এই পদ্ধতির ব্যবহার করছি এবং এটি খুব সুন্দরভাবে কাজ করে। প্রতিটি অনুরোধের সাথে প্যারামিটারগুলি পাস করার চেয়ে অনেক বেশি ক্লিনার। প্র্যাকমেটিক প্রোগ্রামিং কীবোর্ডের নিয়ন্ত্রণ নেয় কখনও কখনও কার্যকরী বিশুদ্ধতা কেবলমাত্র কয়েক সেকেন্ডের জন্য অন্যভাবে দেখা প্রয়োজন :)
পল রাসেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.