3

次の形式の URL があります。

https://clientjiberish:clientsecretjiberish@api.example.com/users?username=tralala

私がする時:

url = 'https://clientjiberish:clientsecretjiberish@api.example.com/users?username=tralala'
uri = URI(url)

必要なものはすべて手に入れました。

uri.host => "api.example.com"
uri.userinfo => "clientjiberish:clientsecretjiberish"
uri.path => '/users'
uri.scheme => 'https'

userinfo 部分にスラッシュが含まれていると、問題が発生します。API キーを提供する API を変更する権限がないため、URI の言及された部分を抽出する方法を見つける必要があります。

URI をテストできる例を次に示します。

url = 'https://clientjiberish:client/secretjiberish@api.example.com/users?username=tralala'
uri = URI(url)

エラー:

URI::InvalidURIError: URI が正しくありません (URI ではありませんか?)

次のように独自のパーサーを作成できることがわかりました。

parser = URI::Parser.new(:RESERVED => ";/?:@&=+$,\\[\\]")
uri = parser.parse(url)

しかし、それを機能させるには正規表現について十分に知りません。

4

1 に答える 1