Ниже у меня есть button
, который пытается загрузить удаленный контент ...
import Post exposing (Post)
import Html exposing (..)
import Html.Events exposing (..)
import Http
import Json.Decode as Decode
type alias Model =
{ posts : List Post }
type Msg
= Search String
| PostsReceived (Result Http.Error (List Post))
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
Search s ->
let
cmd =
(Decode.list Post.decode)
|> Http.get ("/posts?author=" ++ s)
|> Http.send PostsReceived
in
( model, cmd )
PostsReceived (Ok posts) ->
{ model | posts = posts }
! []
PostsReceived (Err error) ->
( model, Cmd.none )
view : Model -> Html Msg
view model =
button
[ onClick (Search "amelia") ]
[ text "Read posts by Amelia" ]
Это действительная программа на Elm, только с одной маленькой проблемой: API не позволяет мне искать по строке. Это не разрешено
/posts?author=amelia => Malformed Request Error
Однако, это является разрешенным
/posts?author=2 => [ {...}, {...}, ... ]
Так что я должен сначала получить автора, чтобы получить его / ее id
, а затем Я могу получать сообщения, используя идентификатор автора ...
/author?name=amelia => { id: 2, name: "amelia", ... }
/posts?author=2
Как мне упорядочить один запрос после следующего? В идеале я хотел бы кэшировать авторов где-то в модели, чтобы мы запрашивали только тех, которых мы не видели раньше.