對於Yesod我很新,現在嘗試開發一個前端網站和一個後端restful webservice。要從網站訪問API,我使用AJAX請求。對於請求的網址,我想用莎士比亞的模板像電話:Yesod:julius模板中的參數化處理程序
$.ajax({
url: '@{PersonR}',
type: 'GET',
contentType: "application/json",
data: JSON.stringify({...}),
success: function (data) {...}
});
在後臺的網站我PersonR處理器路線定義如下:
/api/person/#Int/get PersonR GET
對於這項工作的處理程序像
getPersonR :: Int -> Handler Value
但是,現在朱利葉斯模板需要一個參數是一個有效的。我嘗試了一下,發現我也可以在@ {...}中直接使用haskell代碼。也許我錯過了doku中的那個點。 問題1:有沒有辦法說明可以在JavaScript中給出一個參數?也許用渲染器來輸出這樣的東西:
function(var1){return '/api/person/'+var1+'/get';}
我認爲這缺乏類型安全點。這導致了我的第二個問題(哪一種會否定第一個問題):還有其他方法可以將數據導入客戶端的URL中嗎?
這是第一個問題的解決方案,但它是類型安全嗎?我認爲如果至少引入了對原始類型的javascript檢查(如.isNumber(...)),則包可以得到改進 –
這不是類型安全的,不是。完全類型安全是非常棘手的,因爲您可以將任意類型作爲路由參數引入,但是您可以爲生成的代碼添加一些基本類型安全性。如果你對類型安全非常認真,你可能會考慮一種與Javascript不同的前端語言,儘管 – MaxGabriel
@RenéMartin - 即使你在javascript中做了「類型檢查」,它也不會是類型安全的,因爲斷言會拋出異常。如果你想要類型安全的前端代碼,我推薦使用PureScript。 – pyrospade