আমি কীভাবে স্প্রিং বুটে ক্যোয়ারী প্যারামিটারগুলি পুনরুদ্ধার করব?


121

আমি স্প্রিং বুট ব্যবহার করে একটি প্রকল্প বিকাশ করছি। আমি একটি নিয়ামক যা GET অনুরোধ গ্রহণ করে ।

বর্তমানে আমি নিম্নলিখিত ধরণের ইউআরএলগুলিতে অনুরোধগুলি গ্রহণ করছি:

HTTP: // স্থানীয় হোস্ট: 8888 / ব্যবহারকারী / ডেটা / 002

তবে আমি ক্যোয়ারী প্যারামিটারগুলি ব্যবহার করে অনুরোধগুলি গ্রহণ করতে চাই :

HTTP: // স্থানীয় হোস্ট: 8888 / ব্যবহারকারী ডেটা = 002

আমার নিয়ামকের কোডটি এখানে:

@RequestMapping(value="/data/{itemid}", method = RequestMethod.GET)
public @ResponseBody
item getitem(@PathVariable("itemid") String itemid) {   
    item i = itemDao.findOne(itemid);              
    String itemname = i.getItemname();
    String price = i.getPrice();
    return i;
}

7
@RequestParam(ভাল সূচনা পয়েন্ট: অফিসিয়াল গাইড )
ক্রাইগার

উত্তর:


196

@ রিকোয়েস্টপ্রাম ব্যবহার করুন

@RequestMapping(value="user", method = RequestMethod.GET)
public @ResponseBody Item getItem(@RequestParam("data") String itemid){

    Item i = itemDao.findOne(itemid);              
    String itemName = i.getItemName();
    String price = i.getPrice();
    return i;
}

1
তাহলে এই পদ্ধতির URL কী বলতে পারেন দয়া করে? আমার কী পরিবর্তন করতে হবে
মেহান্দি হাসান

দুঃখিত, এই ইউআরএল লোকালহোস্টটি কাজ করছে না: 8888 / ব্যবহারকারীর? ডেটা = 001 আমি এই ইউআরএলটি প্রবেশ করেছি
মেহান্দি হাসান

3
অনুরোধ ম্যাপিং টীকা থেকে মান = "/" সরান । বিটিডব্লিউ এটি সত্যই খারাপ নকশা। অ্যাক্সেস করার একটি ব্যবহারকারীর জন্য একটি আইটেম চলুন তাহলে বাকি পথ হবে ব্যবহারকারী / আইটেম / {itemId}
আফগানিস্ত

17
@ রিকোয়েস্টপ্রাম হিসাবে ডেটা ক্যোয়ারী প্যারামিটার সর্বদা উপস্থিত থাকা public @ResponseBody item getitem(@RequestParam("data") String itemid){প্রয়োজন Using এর পরিবর্তে যদি আপনি এটি এই ভাবে ব্যবহার , এটা তোলে ডেটা ঐচ্ছিক হতেpublic @ResponseBody item getitem(@RequestParam Map<String, String> queryParameters){
samsri

3
... প্রশ্নের উত্তর দেওয়ার পরিবর্তে আমার উত্তর পোস্ট করা উচিত ছিল! : -ও
ক্রাইজার

9

যদিও আফরেস দ্বারা গৃহীত উত্তরটি ব্যবহারের ক্ষেত্রে একেবারে সঠিক @RequestParam, তবে আমি আরও একটি alচ্ছিক <> ব্যবহার করার পরামর্শ দেব কারণ আপনি সর্বদা সঠিক পরামিতি ব্যবহার করা নিশ্চিত করতে পারবেন না। এছাড়াও, আপনার যদি একটি পূর্ণসংখ্যার বা লং প্রয়োজন হয় তবে পরে ডিএও-তে প্রকারের কাস্টিং এড়াতে সেই ডেটা টাইপটি ব্যবহার করুন।

@RequestMapping(value="/data", method = RequestMethod.GET)
public @ResponseBody
Item getItem(@RequestParam("itemid") Optional<Integer> itemid) { 
    if( itemid.isPresent()){
         Item i = itemDao.findOne(itemid.get());              
         return i;
     } else ....
}

আপনি কোথা থেকে ptionচ্ছিক পেয়েছেন?
জোয়ে গফ


2

বসন্ত বুট: 2.1.6, আপনি নীচের মত ব্যবহার করতে পারেন:

    @GetMapping("/orders")
    @ApiOperation(value = "retrieve orders", response = OrderResponse.class, responseContainer = "List")
    public List<OrderResponse> getOrders(
            @RequestParam(value = "creationDateTimeFrom", required = true) String creationDateTimeFrom,
            @RequestParam(value = "creationDateTimeTo", required = true) String creationDateTimeTo,
            @RequestParam(value = "location_id", required = true) String location_id) {

        // TODO...

        return response;

@ অ্যাপিওপ্রেশনটি এমন একটি টীকা যা সোয়াগার এপিআই থেকে আসে, এটি এপিআইয়ের নথিপত্রের জন্য ব্যবহৃত হয়।


required = trueডিফল্টরূপে
ডিভি 82 এক্সএল

0

আমি এটিতেও আগ্রহী ছিলাম এবং স্প্রিং বুট সাইটে কয়েকটি উদাহরণ পেয়েছি।

   // get with query string parameters e.g. /system/resource?id="rtze1cd2"&person="sam smith" 
// so below the first query parameter id is the variable and name is the variable
// id is shown below as a RequestParam
    @GetMapping("/system/resource")
    // this is for swagger docs
    @ApiOperation(value = "Get the resource identified by id and person")
    ResponseEntity<?> getSomeResourceWithParameters(@RequestParam String id, @RequestParam("person") String name) {

        InterestingResource resource = getMyInterestingResourc(id, name);
        logger.info("Request to get an id of "+id+" with a name of person: "+name);

        return new ResponseEntity<Object>(resource, HttpStatus.OK);
    }

এখানেও দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.