1

私は現在、Liftをフレームワークとして使用してRestApiに取り組んでいます。ほとんどのリクエストは、正常に機能するリターンタイプとしてJsonを使用しています。

serve ("api" / "item" prefix {
    case _ :: Nil JsonGet _ => {
      if (checkKey(S.params("api_key").mkString)) Item.newItem(S.params("item_id").mkString, S.params("api_key").mkString)
    }
  })

ここで、mysqldbに格納されているプレーンなhtmlを返す関数を追加したいと思います。したがって、基本的には、文字列をResthelperに戻したいと思います。私はこのようなことを試しましたが、コンパイルされませんでした:

serve {
    case "itemDesc" :: itemnum :: _ => {
      Item.getDescription(itemnum)
    }
  }

ばかげているかもしれませんが、Liftの「クックブック」には何も見つかりませんでした

アップデート:

serve { 
    case "itemDesc" :: AsInt(itemnum) :: _ XmlGet _ => { 
      Item.getDescription(itemnum) 
    } 
  }

htmlをXMLとして販売することで、これをだましてみました。コンパイルされましたが、最後には機能しませんでした。明らかに、RestHelperから通常の文字列に応答することはできません。

ご協力いただきありがとうございます

4

2 に答える 2

1

あなたは返す必要がありますBox[LiftResponse]

だからその場合はそうなるでしょうFull(PlainTextResponse(Item.getDescription(itemnum))

からの暗黙の変換も追加しますLiftResponse -> Box[LiftResponse]

于 2012-10-01T19:35:08.067 に答える
0
serve {
    case "itemDesc" :: AsInt(itemnum) :: _ XmlGet _ => {
      Full(PlainTextResponse(Item.getDescription(itemnum), ("Content-Type" -> "text/html") :: Nil, 200))
    }
  }

正解です。HTMLを解析するには、コンテンツタイプをPlainTextResponseに追加する必要がありました。これを切り取って、残りのAPIをチャームのように機能させ、コンテンツタイプhtmlのプレーンテキストをブラウザーに返す関数を追加できます。

于 2012-10-04T15:08:12.767 に答える