我正在尝试在 Go 中编写一个 REST API,当我通过邮递员运行时,所有方法都可以正常工作,但是当使用 JAVA 脚本函数从 HTML 页面调用 PUT 和 Delete 方法时,它不起作用。有没有相同的替代品?
这是我在 main.go 文件中的 Go 处理程序。
func main() {
router := mux.NewRouter()
router.HandleFunc("/", HomePageHandler).Methods("GET")
router.HandleFunc("/demo", CreateDemoDetail).Methods("POST") // Add New row
router.HandleFunc("/demo", GetAllDemoDetails).Methods("GET") // Fetch all details
router.HandleFunc("/demo/{id}", GetDemoDetail).Methods("GET") // Fetch Single row
router.HandleFunc("/demo", UpdateDemoDetails).Methods("PUT") // Update Single row
router.HandleFunc("/demo", DeleteDemo).Methods("DELETE") // Delete Single row
log.Fatal(http.ListenAndServe(":8080", router))
}
以下是调用处理程序的 Java 脚本函数,
function submitForm(reqtype){
var form = document.getElementById("demoform");
if (reqtype == "Delete"){
form.action = 'http://localhost:8080/demo';
form.method='PUT';
}
if (reqtype == "Update"){
form.action = 'http://localhost:8080/demo';
form.method='DELETE';
}
form.submit();
}
</script>
如果我将处理程序更改为 router.HandleFunc("/ updatedemo ", UpdateDemoDetails).Methods("POST") 而不仅仅是 /demo 和 POST 方法,它可以从 java 脚本工作,但不是当它的 demo/ 和方法是 PUT /删除。
有趣的是,当端点是 demo/ 或 get demo 并且方法是 POST/GET/PUT/Delete 时,它与 Postman 完美配合。但不是来自带有 Javascript 调用的 HTML 表单。
我应该采取的最佳方法是什么?