বিশেষ চরিত্রগুলি পরিচালনা করার মধ্যে @RequestParam
এবং এর মধ্যে পার্থক্য কী @PathVariable
?
+
@RequestParam
স্থান হিসাবে গ্রহণ করা হয়েছিল ।
ক্ষেত্রে @PathVariable
, +
হিসাবে গৃহীত হয়েছিল +
।
বিশেষ চরিত্রগুলি পরিচালনা করার মধ্যে @RequestParam
এবং এর মধ্যে পার্থক্য কী @PathVariable
?
+
@RequestParam
স্থান হিসাবে গ্রহণ করা হয়েছিল ।
ক্ষেত্রে @PathVariable
, +
হিসাবে গৃহীত হয়েছিল +
।
উত্তর:
@PathVariable
ইউআরআই থেকে কিছু স্থানধারক অর্জন করতে হবে (বসন্ত এটির ইউআরআই টেম্পলেট বলে) - স্প্রিং রেফারেন্স অধ্যায় 16.3.2.2 দেখুন ইউআরআই টেম্পলেট প্যাটার্নস@RequestParam
এছাড়াও ইউআরআই থেকে একটি প্যারামিটার অর্জন করতে হয় - স্প্রিং রেফারেন্স অধ্যায় 16.3.3.3 দেখুন @RequestParam এর সাথে পদ্ধতি পরামিতিগুলিতে অনুরোধের প্যারামিটারগুলি বাধ্যতামূলক করাযদি http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
5 ই ডিসেম্বর, 2013- এ ইউআরএল 1234 ব্যবহারকারীর জন্য চালান পেয়ে থাকে, তবে কন্ট্রোলার পদ্ধতিটি দেখতে পাবেন:
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
@PathVariable("userId") int user,
@RequestParam(value = "date", required = false) Date dateOrNull) {
...
}
এছাড়াও, অনুরোধের প্যারামিটারগুলি alচ্ছিক হতে পারে এবং স্প্রিংয়ের ৪.৩.৩ পাথ ভেরিয়েবলগুলিও optionচ্ছিক হতে পারে । যদিও সাবধান থাকুন, এটি ইউআরএল পথের স্তরক্রম পরিবর্তন করতে পারে এবং অনুরোধ ম্যাপিং বিরোধগুলি প্রবর্তন করতে পারে। উদাহরণস্বরূপ, /user/invoices
ব্যবহারকারীর জন্য চালান null
বা আইডি "ইনভয়েস" ব্যবহারকারীর সম্পর্কে বিশদ সরবরাহ করবে?
@PathParam
ইউরি টেমপ্লেটে কোনও স্থানধারক থাকলে কেবল কাজ করে)
@PathParam
একটি জাভ্যাক্স.উজ.আরস টিকা। docs.oracle.com/javaee/7/api/javax/ws/rs/PathParam.html
অনুরোধ থেকে ক্যোয়ারী প্যারামিটার মানগুলিতে অ্যাক্সেসের জন্য ব্যবহৃত @RequestParam টিকা। নিম্নলিখিত অনুরোধ URL দেখুন:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
উপরের ইউআরএল অনুরোধে, প্যারাম 1 এবং প্যারাম 2 এর মানগুলি নীচের হিসাবে অ্যাক্সেস করা যেতে পারে:
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
...
}
নীচে @ রিকোয়েস্টপ্রাম টিকা দ্বারা সমর্থিত প্যারামিটারগুলির তালিকা রয়েছে:
@PathVariable
@ প্যাথ ভেরিয়েবল আসন্ন অনুরোধের জন্য ইউআরআইতে ব্যবহৃত প্যাটার্নটি সনাক্ত করে। নীচের অনুরোধ URL টি দেখুন:
HTTP: // স্থানীয় হোস্ট: 8080 / springmvc / হ্যালো / 101 PARAM1 = 10 & PARAM2 = 20
উপরের ইউআরএল অনুরোধটি আপনার স্প্রিং এমভিসিতে নীচে লেখা যেতে পারে:
@RequestMapping("/hello/{id}") public String getDetails(@PathVariable(value="id") String id,
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
.......
}
অনুরোধ ইউআরআই টেমপ্লেটটি আবদ্ধ করার জন্য @ প্যাথ ভ্যারিয়েবল টিকাতে কেবল একটি বৈশিষ্ট্যযুক্ত মান রয়েছে। এটি একক পদ্ধতিতে একাধিক @ পথের পরিবর্তনযোগ্য টিকাটি ব্যবহারের অনুমতিপ্রাপ্ত । তবে, নিশ্চিত করুন যে একের বেশি কোনও পদ্ধতির একই ধরণ নেই।
এছাড়াও আরও একটি আকর্ষণীয় টিকা আছে: @ ম্যাট্রিক্স ভেরিয়েবল
এবং এটির জন্য কন্ট্রোলার পদ্ধতি
@RequestMapping(value = "/{stocks}", method = RequestMethod.GET)
public String showPortfolioValues(@MatrixVariable Map<String, List<String>> matrixVars, Model model) {
logger.info("Storing {} Values which are: {}", new Object[] { matrixVars.size(), matrixVars });
List<List<String>> outlist = map2List(matrixVars);
model.addAttribute("stocks", outlist);
return "stocks";
}
তবে আপনাকে অবশ্যই সক্ষম করতে হবে:
<mvc:annotation-driven enableMatrixVariables="true" >
userName
একটি টাইপ পরম আছে বা না? আমি এটিকে পরিবর্তনশীল করার দিকে ঝুঁকছি, তবে এটিও পরম হতে পারে।
@PathParam
এবং @RequestParam
ব্যবহার না করে ঘোষণা করা যেতে পারে@RequestMapping
@ রেকুয়েস্টপ্যারাম কোয়েরি প্যারামিটারের (স্ট্যাটিক মান) এর মতো ব্যবহার করা হয়: http: // লোকালহস্ট: 8080 / গণনা / পাও? বেস = 2 এবং এক্সট = 4
@ পাঠ্য ভেরিয়েবলটি গতিশীল মানের জন্য যেমন: HTTP: // লোকালহোস্ট: 8080 / গণনা / স্কয়ার্ট / 8
@RequestMapping(value="/pow", method=RequestMethod.GET)
public int pow(@RequestParam(value="base") int base1, @RequestParam(value="ext") int ext1){
int pow = (int) Math.pow(base1, ext1);
return pow;
}
@RequestMapping("/sqrt/{num}")
public double sqrt(@PathVariable(value="num") int num1){
double sqrtnum=Math.sqrt(num1);
return sqrtnum;
}
1) ক্যোয়ারী প্যারামিটারগুলি@RequestParam
নিষ্কাশন করতে ব্যবহৃত হয়
http://localhost:3000/api/group/test?id=4
@GetMapping("/group/test")
public ResponseEntity<?> test(@RequestParam Long id) {
System.out.println("This is test");
return ResponseEntity.ok().body(id);
}
যখন @PathVariable
কোনো URI থেকে নির্যাস তথ্য ডানদিকে ব্যবহার করা হয়:
http://localhost:3000/api/group/test/4
@GetMapping("/group/test/{id}")
public ResponseEntity<?> test(@PathVariable Long id) {
System.out.println("This is test");
return ResponseEntity.ok().body(id);
}
2) @RequestParam
একটি traditionalতিহ্যবাহী ওয়েব অ্যাপ্লিকেশনটিতে আরও দরকারী যেখানে ডেটা বেশিরভাগ ক্যোয়ারি প্যারামিটারগুলিতে পাস করা হয় এবং @PathVariable
আরএসটিফুল ওয়েব পরিষেবাদির জন্য আরও উপযুক্ত যেখানে URL এর মান রয়েছে values
3) @RequestParam
এনটোটেশন ডিফল্ট মানগুলি নির্দিষ্ট করতে পারে যদি কোনও defaultValue
বৈশিষ্ট্য ব্যবহার করে কোনও কোয়েরি প্যারামিটার উপস্থিত বা খালি না থাকে তবে শর্ত থাকে প্রয়োজনীয় বৈশিষ্ট্যটি false
:
@RestController
@RequestMapping("/home")
public class IndexController {
@RequestMapping(value = "/name")
String getName(@RequestParam(value = "person", defaultValue = "John") String personName) {
return "Required element of request param";
}
}
@PathVariable - must be placed in the endpoint uri and access the query parameter value from the request
@RequestParam - must be passed as method parameter (optional based on the required property)
http://localhost:8080/employee/call/7865467
@RequestMapping(value=“/call/{callId}", method = RequestMethod.GET)
public List<Calls> getAgentCallById(
@PathVariable(“callId") int callId,
@RequestParam(value = “status", required = false) String callStatus) {
}
http://localhost:8080/app/call/7865467?status=Cancelled
@RequestMapping(value=“/call/{callId}", method = RequestMethod.GET)
public List<Calls> getAgentCallById(
@PathVariable(“callId") int callId,
@RequestParam(value = “status", required = true) String callStatus) {
}
টীকাগুলি উভয়ই ঠিক একইভাবে আচরণ করে।
মাত্র দুটি বিশেষ চরিত্র '!' এবং '@' টীকাগুলি @ পাথ ভার্ভেয়েবল এবং @ রিকোয়েস্টপ্রাম দ্বারা স্বীকৃত।
আচরণটি যাচাই করতে ও নিশ্চিত করতে আমি একটি বসন্ত বুট অ্যাপ্লিকেশন তৈরি করেছি যাতে কেবলমাত্র 1 জন নিয়ামক রয়েছে।
@RestController
public class Controller
{
@GetMapping("/pvar/{pdata}")
public @ResponseBody String testPathVariable(@PathVariable(name="pdata") String pathdata)
{
return pathdata;
}
@GetMapping("/rpvar")
public @ResponseBody String testRequestParam(@RequestParam("param") String paramdata)
{
return paramdata;
}
}
নিম্নলিখিত অনুরোধগুলি হিট করা আমার একই প্রতিক্রিয়া পেয়েছি:
! @ উভয় অনুরোধের প্রতিক্রিয়া হিসাবে প্রাপ্ত হয়েছিল
এও হতে পারে যে আবেদন / এক্স-WWW-ফর্ম-urlencoded করতে মিডিয়া শেষ করে দিয়েছে টাইপ রূপান্তর স্থান + + , এবং গ্রাহক রূপান্তর দ্বারা ডেটা ডিকোড হবে + + আরও তথ্যের জন্য URL space.check করতে। http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
@PathVariable
যে কোনও রিকোয়েস্টমেথ