উত্তর:
একজন QueryString হয় সংজ্ঞা দ্বারা URL- এ। আপনি অনুরোধটির ইউআরএল req.URL
( ডক ) ব্যবহার করে অ্যাক্সেস করতে পারেন । ইউআরএল অবজেক্টে একটি Query()
পদ্ধতি ( ডক ) রয়েছে যা একটি Values
টাইপ প্রদান করে, যা কেবল map[string][]string
কোয়েরিস্ট্রিং পরামিতিগুলির মধ্যে একটি।
আপনি যদি সন্ধান করছেন তা যদি কোনও এইচটিএমএল ফর্ম দ্বারা জমা দেওয়া পোস্টের ডেটা হয় , তবে এটি (সাধারণত) অনুরোধের বডিটিতে একটি মূল-মান জুড়ি। আপনি নিজের উত্তরে সঠিক আছেন যে আপনি কল করতে পারেন ParseForm()
এবং তারপরে req.Form
কী-মান জোড়ার জোড়ার মানচিত্র পেতে ক্ষেত্রটি ব্যবহার করতে পারেন, তবে আপনি FormValue(key)
একটি নির্দিষ্ট কীটির মান পেতে কল করতে পারেন। ParseForm()
প্রয়োজনে এটি কল করে এবং সেগুলি কীভাবে প্রেরণ করা হয়েছিল তা নির্বিশেষে মানগুলি পায় (যেমন ক্যোয়ারী স্ট্রিংয়ে বা অনুরোধের অংশে)।
req.URL.RawQuery
?
জিইটি অনুরোধে সমস্ত কিছু ফেরত দেয় , যদি এটি সহায়তা করে।
জিইটি প্যারামিটারগুলি কীভাবে অ্যাক্সেস করবেন তার আরও দৃ concrete় উদাহরণ এখানে। Request
বস্তুর একটি পদ্ধতি যে তাদের জন্য আপনাকে নামক আউট parses হয়েছে ক্যোয়ারী :
একটি অনুরোধ URL যেমন http: // হোস্ট: পোর্ট / কিছু? প্যারাম 1 = বি হিসাবে ধরে নিচ্ছেন
func newHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("GET params were:", r.URL.Query())
// if only one expected
param1 := r.URL.Query().Get("param1")
if param1 != "" {
// ... process it, will be the first (only) if multiple were given
// note: if they pass in like ?param1=¶m2= param1 will also be "" :|
}
// if multiples possible, or to process empty values like param1 in
// ?param1=¶m2=something
param1s := r.URL.Query()["param1"]
if len(param1s) > 0 {
// ... process them ... or you could just iterate over them without a check
// this way you can also tell if they passed in the parameter as the empty string
// it will be an element of the array that is the empty string
}
}
এছাড়াও নোট করুন "একটি মান মানচিত্রের কীগুলি [যেমন প্রশ্নের () ফেরতের মান] কেস সংবেদনশীল।"
r.URL.Query().Get("moviename")
এই মারাত্মক ভুল এড়ানোর জন্য)।
Get
একাধিক থাকলে কেবল পদ্ধতিটি ব্যবহার করে প্রথমটি ফিরে আসে, তাই এটি আরও উদাহরণ। দরকারী তথ্য, আপনাকে ধন্যবাদ!
Values.Get()
আয় সঙ্গে nil
। golang.org/pkg/net/url/#Values
নীচে একটি উদাহরণ দেওয়া হল:
value := r.FormValue("field")
আরও তথ্যের জন্য. HTTP প্যাকেজ সম্পর্কে, আপনি এটির ডকুমেন্টেশন এখানে দেখতে পারেন । FormValue
মূলত POST বা PUT মানগুলি বা GET মানগুলি প্রদান করে, সেই ক্রমে, এটি প্রথমটি খুঁজে পায়।
এখানে একটি সাধারণ, কার্যকারী উদাহরণ:
package main
import (
"io"
"net/http"
)
func queryParamDisplayHandler(res http.ResponseWriter, req *http.Request) {
io.WriteString(res, "name: "+req.FormValue("name"))
io.WriteString(res, "\nphone: "+req.FormValue("phone"))
}
func main() {
http.HandleFunc("/example", func(res http.ResponseWriter, req *http.Request) {
queryParamDisplayHandler(res, req)
})
println("Enter this in your browser: http://localhost:8080/example?name=jenny&phone=867-5309")
http.ListenAndServe(":8080", nil)
}
ক্যোয়ারী প্যারামগুলি পাওয়ার দুটি উপায় রয়েছে:
দ্বিতীয় ক্ষেত্রে কাউকে সতর্কতা অবলম্বন করতে হবে কারণ শরীরের পরামিতিগুলি ক্যোয়ারী প্যারামিটারগুলির চেয়ে বেশি হবে। ক্যোয়ারী প্যারামগুলি পাওয়ার সম্পর্কে একটি সম্পূর্ণ বিবরণ এখানে পাওয়া যাবে
https://golangbyexample.com/net-http-package-get-query-params-golang
নীচে শব্দগুলি অফিসিয়াল ডকুমেন্ট থেকে এসেছে।
ফর্মটিতে ইউআরএল ফিল্ডের ক্যোয়ারী প্যারামিটার এবং পিওএসটি বা পুট ফর্ম ডেটা উভয়ই বিশ্লেষণ করা ফর্ম ডেটা রয়েছে । এই ক্ষেত্রটি কেবল পার্সফর্ম কল করার পরে উপলব্ধ।
সুতরাং, নীচের হিসাবে নমুনা কোড কাজ করবে।
func parseRequest(req *http.Request) error {
var err error
if err = req.ParseForm(); err != nil {
log.Error("Error parsing form: %s", err)
return err
}
_ = req.Form.Get("xxx")
return nil
}
r.FormValue("id")
কোয়েরি পরম আনার জন্য ব্যবহার করেন তবে আপনি সিআরএল-এ ফর্ম ডেটার মাধ্যমে আমাকে প্রেরণ করতে পারবেন না (যেমন,curl 0.0.0.0:8888 -d id=foobar
কাজ করবে না)। আপনাকে অবশ্যই এটি ক্যোয়ারী প্যারামের মাধ্যমে প্রেরণ করতে হবে (curl 0.0.0.0:8888?id=foobar
)।