2

私は最近、より多くの groovy を使用しており、部分文字列を既知の文字にする必要があるという問題に遭遇しました。つまり、HTTP ヘッダーからセッション Cookie を取得しようとしています。私のコードは次のように醜いです:

def cookie = connection.headerFields.find{ it.key =='Set-Cookie'}.value[0]
cookie = cookie[0..cookie.indexOf(';')-1]

connection は URLConnection への参照です。余分な操作がなければ、 のような値が得られます"[JSESSIONID=72Q4TCEEDC21GX9152E7702A23DC3854E; Path=/; Secure]"。最終結果は、予期されるセッション ID"JSESSIONID=72Q4TCEEDC21GX9152E7702A23DC3854E"です。しかし、これを行うにはもっとかっこいい方法があるに違いないと考えずにはいられません。要するに、substringToString(';')少なくとも 1 つの他の言語で見たことがあると思われる a がありません。全体として、他のパスと安全な言葉遣いなしでクッキーを取得するには、おそらく4〜5のより良い方法があると思います。

4

1 に答える 1

2

物事を複雑にしているようです。なぜあなたはこのようにできないのですか:

//  if you want all cookies
def cookies = request.cookies  

// if you need a particular cookie
def cookie = request.cookies.find { it == 'cookie-name' } 

上記の方法はコントローラーで機能します。サービス層から、次のように最初に行う必要があります。

def request = RequestContextHolder.currentRequestAttributes().request

そうすることはお勧めしませんが。

于 2012-05-28T06:26:19.113 に答える