Layer7 API Management

 View Only
  • 1.  The best practice for get an image with an api

    Posted Jan 13, 2020 11:03 AM
    Hi Community,

    I would like to know wich is the best way for get an image.jpg with an api and if i need an special configuiration for this mime type?

    Regards,

    Julio Ramos.

    ------------------------------
    [Julio C. Ramos]
    [DevOps]
    [IT Business Solutions DEF]
    [City]
    ------------------------------


  • 2.  RE: The best practice for get an image with an api

    Broadcom Employee
    Posted Jan 15, 2020 12:37 PM

    Julio,
    Sorry I dont quite understand the question can you give more details and use case?

    Are you getting a response from an http route in the gateway, which includes an image (jpg)? And want this to be passed to the browser? Are you trying to change the mime? Or just pass through? Could you add some details?
    Thanks..




  • 3.  RE: The best practice for get an image with an api

    Posted Jan 16, 2020 09:09 AM
    From my perspective, how would a service return an image (jpg, png, etc.)?  The content-type can be set to an image type in the template response but there is no way to return the image itself.  Base64 encoding the image and including it in the body of the template response does not "work" from a browser.


  • 4.  RE: The best practice for get an image with an api

    Broadcom Employee
    Posted Jan 16, 2020 09:20 AM
    Hi Jackie,

    Try this to return an image. The template content-type has to he set to HTML.


    <?xml version="1.0" encoding="UTF-8"?>
    <wsp:Policy xmlns:L7p="http://www.layer7tech.com/ws/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
    <wsp:All wsp:Usage="Required">
    <L7p:HardcodedResponse>
    <L7p:Base64ResponseBody stringValue="PGltZyBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFFQUNBTUFBQUJyckZoVUFBQUFZMUJNVkVYLy8vLzAvdjFQVlZkQlIwajgrdmYxOWZVUkR3MysvLzcrL1A3Ny9QejNCQVo1ZTN2cjdlei84T3ZsQ1JLZ29xS1BrSTh1TENyYzNkNWxaMmpPejgvTkVoeSt3TUN4c2JIL3E2Ny8yOXIveGNQaFAwUzBKUzM3YjNUK2tKTFdVbGk5b2FNaUdjNllBQUFPamtsRVFWUjQydTFiNjNyaU9CYjBSWXFrbG95TkxHd2d0M24vcDl5cUl4dVN6UFIrKzJORDk5ZHpLbWt3eGhDZlVwMmJwRzRhaFVLaFVDZ1VDb1ZDb1ZBb0ZBcUZRcUZRS0JRS2hVS2hVQ2dVQ29WQ29WQW9GQXFGUXFGUUtCUUtoVUtoVUNnVUNvVkNvVkFvRkFxRlFxRlFLQlFLaFVLaFVDZ1VDb1ZDb1ZBb0ZBcUZRcUZRS0JRS2hVS2hVUHc1Y1BYUkdkZTRnS05RbnkzK09YbHcveElDWURyTnQyU2c4VGcwbGdmQi9mRU1WUHM5Ump0WTJ0eDRLeng0N3lrRzUvNE5GRGdmREJSdm1wRFdjVm96WFFBd1lNV1RpRCtkQTlpUDhUY3dlNDNUSEdNY2syOXNDbzBCSmNGWE1menBCRmlZdkV4eFdrcFp4aGlYQkY4d214SkFncWpnVDFVQzdjZG9aOXJkSko0b2NSNnpDd2dKR3dFaC9NRUVRT0F3MEM0dzJpSUF3bVRyN0RySEJjY0lobzhsNFBZM0hzYTNZWlJyMjVESEtRc1hLVGhydlVzeFptL0lqV1dHbE11SUwvZnF2dDU4ZFJaZXgwYzZUOFZPWUhXbysvZjR6ekFFUDJkQ0N6eUFBZDVOYUJIdUxza1lpeHROMXVGdVFVUEtPWmZNTzAybXNadjVkd0s4QzUrTGhHcTRoSXRxc0VnTGxVVDlkMGY0WkhINDlIb2p3THRLd0dOS0FOOEdmN2xlQm1OdDIySzhrN1c0aDVUWE9NZHB0WkNBVGMwK2xuZGpZYjl4dDVHdDV1OWp2ai9XWjdjZEMwdzFPTlNmWU14MkVZNWx6UG5vaElvMnVJK0sreVpBWlNENjh2YitTZ3BDNjFFTk9UQ0NLREJQeUFkNENJMDFkci9OTzIyNGQzZVBEYzdmcmJ4Yit6ZkFxOEFBeDVoRThOQ1FBbjZpRlhoNUZ0cFFrL3J2WjhERG1OWmMzMCtubDdmTE1CaUhpZ2pqdmN6ZDZIZ3JPYzVyUnBVYzl1RzhDWm1qYVQ1b08veXZvSS9mL2dHT0ltanYzMU1KQ01GOUNUcmZsZ1NjTWVmbnc0L0Q2ZjBNQ3RnQzVhbWJraytodFJBSUUwTGFSdll1WFZwdkdLdStHTGVkTWJlajhPa3FLa0M4Z0k5eWtmbm9CRUVpY2hzZWFMKzQyM0FGQVdEZzlIb3h6cm84ejFuOE1MVHNEOUkwajgxdC9IZjc2ODBILzBueDFTQ0JOVDlETUI4dW84cndMZjcrS2Z3TytObnMvL1kwUUxiTlFBWDhJQVV2bDhHYm5IRlhESVF0Q3dEYk5tWGNCL0N6QXN3bkJaaWRnSEEzTmZ5RUF2UVo5WWNFVUF4bStBSWtBOFNpNzgrRExWTmdWWUF3OEk0L0RUL1l5Z00yeGJ3TlpnS0x5SWdoc1d3WEdaN3l1cXlMdTF2dm03emd6SklkREZ2eFpvS1lyRTlsV1hOMkNlOHNPRnpXZ3ROR3JzUkR5ZmhDdk9hZ256L2l5b2dNR1RZUElNRGRDZmh4ZXJtUy9nc0h4TGNKVmxuUkFEcmtwVFFZK1FUNytXU2E4ZW5wcVUrN3U3TnZtSitJTGpsWHVxZmoweXdNOENTT0pua1BaL0VaOE5rLzdlaEdUejhiTHBlWGw5T09sNWVYOCtBWURKdEhWRUlmQ0RpOG5DL3ZOUjhNQTh1Q0ZyZmhFQlRITUhheDRHb0lBVTB5eG8wRUhHOEtnSnBUSnhZZVFZQVJlNHRMaHFZZXgrMkVVTkFqcXJqampRQzh5ekNBUHdjQ0RqdE96MmYrK2VZQlNZRFYzMGNDM3M0bmhBTG1BOFNqbG8xQk8zWjlQemUyZ0FiV3hkWWt6cGtJQVdhUDh2RFZ0VnAxWERHZytZZ1hVNnFHeitDQnowZDAycWd1SUhnaElLTFc0bk9QV2d1VktCUlFKWUNFOU9NQUFveHJuZjErQWd3ajhJMkFINmZYTThjQktYRVlVdXNINzVhNTd3REVvN1JPM2NwQmdkNGJ1MzVXZ0cwaWJLRzBJeXlrNGNkamNZNG5KcmpDSkE2VGtzRXZmUDRvcDUwUkZpMWFqWUVVWEs3RStSa0Q4WG8xRW9YY3QxY0JrdGt1cjZjdENoNWUzMDQvOXBTWXJNK3h3L2gzL1F3TFVTS05jMHhvbVMyd3UwQlZBTXBsMkRwSFdIWkVRMkVNSlRDNkJZOWQ4VlVCUFpoaHdFUGRTQUpHdkZqcElZbmxBU25nNzNCNXBRZWdMSldhNk51ekFMUUxGNlFQSERZRkNBRmc0b1JCc0NWUy9sMHZDdUM4WVlrRktTR2hOdndTQTVvQ28yS21RY2dES0I3a2JZYkFFUzRocnRDejZzUFgyQ1RDRUFJa0tzTE5PQ1hqSlJlK1FZQUlnU2FGaDFSQ3lIR01RYWdFUkFPN0FvU0R0eUZOR0gwcW9PdlEvYlJTSmNaVjVnbXFldStWbm9NSFBLMjBtRUhBSUFwUTViU3ZJQzk2NFdOWmdRUVd4QVhHTFZqMnZwRnF3TE4yWWtseXFCSHdNUVNnMG5Bc1JZYnJxNFNmdyt0NWo0ZUg1OHZDc2E4VXNGRkRRblNoWkFxK0NWVUJzTFVxd0NFSDlGbDhmZVpaRTJ2V293RFFNMG9XT0JJRlpZSzRRRGROTXdsYVdCVGpIdGdFTUJvZFRtQmVtdUZIRUFCSk5peDVFWU1vQWdqLzdiQXpjRHIvSmZHUEZIUmJ0MmFYR0JlRWJldHJGc0FvV3BycktQNStYYUtFZFFvOTE2UUFVaEJsbTFzYWZGcjRtZVBUbGdpUGpCQkRiUUJhR3k3dnlFR3ZsNkd0MHlFUEtBTzRKQ1F6QXZDLzY5dnppNlRCR3dFajQxOG5DZ2dXUlE5UzRkejNDTjl1cndOUUp4bUVoK0NvOW1QZjA2NWpvWmpGSitBRmRIemphaHFjZ1dKQlNDOFZnVnk4c3ZWdkpRU1k0UTMydjBzQTlPRXhheEttZHZJTVFnTXBPRit2cDEwQ1ZNQWVBaUlHcE0zalRFYW13QVdEU2dDczV3S0NkZjNIMGdheTJDUndaT1VicWd2MFRBS0pTVkppUU13TFhlQzRlTGdXaWo3OGZRWUFCTURCbXpxTjlvQTVJYmUxblJpRDFrbzdSaFhlQ2VnMkgwQkgzQzVSdUFBQkdDK3p1UUErZ1NEbzByRVdPcEhsWUNkR0d0YkRFUm1BUDBLQWxTUUlCNmxCMEx2Y1NkM2daQW9BeGVmcjRRY0N3R0MyS1VpMklkOXRmK3MyQXFRdnMyM3l3M21UUUkwQm9vRXU0dTFWaGg4bnBwYmQ4YVlBeTJsa2REOHdhVWJuWktRK1N1eXFEWFBnaEFobzlqUUlRU2RHaEJvRVIxdmRwQThVZ0lVUG5sa0NYdUFSK3d6c0Erb0Fpc3h2R3VBNHRQQ0V0eTBsYmdyb1lYSnVRNWwzT1V3SlkxNWpRSUs2cGJLWmEybG5YUkZWMCtqUXNSem1lT080dWdBY0FKZWduNmhwMERyNWtzd0l5QnJvL1FUVllmeVR0elVKdWtlMHd6THpCcWVUZWMrQTZ2ZDZmVU14ZHFnRWNNempXTEpGUjdCbFJMaUFDVFVJUG8zVE9FMWpzYmFhamFGT3BBTENSMTRSVXRqclk5UWxDRTV5ZFliSFNKRmdYR0NsaUpEQkJRa3pYRjZRZXRFSFc2a0JHUWNlTUMxZXB4NjN5V2hpdUx3L3Y1NHBnc1BMRlFUMDNWUVErOWMyZGpjRnROdy9NTjZqM2hURUF4Sm45eVQvOTh3VHJBeWdBQ2RlZjArRFR5dTg0cmkxQ0xrMkR6aGpKUVVjM3RDSjMrWUZIN0F1VWpPTnEwRkxPQml1Nk1tZTM4NnZ6NmYzNjlwMTA1SkhtbTZqS0lBYUdGTkMraGkzUXVmSUFwQTl3SVErSDROYnExdU1ycG5SRDB6c2Zhd1hGMER5NXdkV1JJVWVMMGlBalRLRFFBZEVDRVFPUEVzRXJEUER6ajFrVHBRcWFFMjd6MVpKREdRMWVuNDlEMmxaeTFKalg0Z2lnQjZ2eHJ5VXBpbnhobUpHUGtxSWIvSVVJOHhHbThHVEMzbmxGTkIyS2Q3TWlKdGNoRjdRVlRyNWxneWZiMnNPUUJOb2ZWMGJRSFh4aVBrQVRzRFhJazlJc0NCZzc0V0dnZFBpZlZXK204WC9TVUhKaTh3SU1QZzFKckVNWW5YSFgrc2JUcXh6aWRIVTVXVUdnNW9LSGVlKzJEYmhpaUE5TlZLb1o5R0kwVzdkTUxBS3Z1THFJR1d3Y1krWkVQRk5jN05mWm1hMlNoQVYyZFcweTF3OUg3MUFyQlZSMzQwcHI1d2VZM1BMT1VPWXpkcVlyNWdWcTkwTkp4RVJLK2tXWEQ1ZzdBZFhDTFZrMmRZWjRNQTFOL1lCOEJNbzRQMkVLdERjSTBBSUR3Z0NYZ0pCNFB3ckhTR2dKZGluQms2dnQyNnc3K1pRZ3lCaUlvY2NRclVpQVpQWUM5UnFML0NJVzIxQ3c2VWtRM2E1NE1qVUQzK21ZR1FSaEZJQUZaN0xzRkNRWWNwREVEVG50N2Z6eFVsZEtxdUdERTd1SVZGd0s0WmtWZlpXQi8zQWNQeTFkVUpWQVh5YUZ6VEZTU1lTZ3BpZUpPQkxNVVN0U3lNWU9QelMrSk1qTHlxd01xM01iVWpXeUNRek82aEdsdU1UWk5DZzBXUXBZSVBaRjRoUW83cnZMNFZsV0Q0dVV0Y2dlS3NFcFE2a0Fwd0V3ZFZ5a3BSRHpWRVg4WE9DS01sbUNpdk5zYWNFUkFkNEhhaCt0Z3A0U1lkcCtJYVJOVFV1QzVDSFZ1SXZubE9RaFpLaFZzR2hEUThwaExhRzY3NCtmZm5ZRGRaU1dFaHdJeXFpeExGdVRGbW5jYzBtamVNS0VUdEUrd0lwckNXVUZiSXVZN1pqd29XSS9Dc0lLbXZtcDlJVXg0eUJ0aU9TQlB4aTVXY0x2eUs0WllxcjlBZ0lCZHMwU0wydlIrNUlxYXZhZzlSanNQN0xmRUJzMHBJekF4eWNPQzF6UkMxUStxVmc3SmU1akhNT0tVNXVuQk1NN0tiY1pSRFJMVXUzQkp4Y0VDRXlzdDAwYzZFdEl2V0JCN3gyWVp4TFFlYU0vSVRzeTVJbEZ0ZjhnaDJhTER0WUROKzd3WTJBR3ZwV3pnTGg5aXpsMjVRWkhhRXBYY2tJQlRHbWpERzFjNFNSaUFKakh3c0lnT0UyZFNQcWZiTGc4QkVjb1FhSVUwZ1prU1BPY3MyU0c1QXpseG9lWkUvU3I5bVQ1b1FBOXJubmw5T1hHQUFCSUxzbEJpK1ArTzZhUEU4SVg2WEhLQVpZUWg5M2FaNVhDTU1sS0NCMkdVTThwZHlOTFVaNVFZUXI4NWhXMm94Q2Nwb1FTRmdSaGJHYlJ3U1JnZ2dMSWRSbCtJZTBBRDhqd09OdWhvMkJtd3YwZldUcTQveTVlSUJCWnhnUnJhRUF1THlibzAwVFhBRFBZMnc1ZFY3NnFnQ1FNZ1k3U3VZQUFWQUFQSVpFVE1XMUViMERmUWE2VDZPQkMzQyszWVRIaEw2ZkU0RGs3UGNKMHEwYjdMay9nRHRsdk93YlkwQ0Ruc0hGZ3ZhdU9MdDBpSUx3ZlpBeXpTbUFnRFIzT2JTbEgyTmZIRWQ1V2lIemJvMlJIVENlT3dpRkx0Q09QYnBEeElBNDlwWmJrWnA5UDlXdkk4Q0g1akpjenUvUHA5UEwrYStqVkg3Y05zNnlwWmEyZUlHSWp5bzJqeXRLUW11WGRjVWxZVm1hc3VETnNpSzRNNTdoZkliZjVCVXB3d2F1RDNNNkFNOWw0U1lVYnNZczY4b2dVSEF1c1g3OGhmc1JOd0pRekNmT3psMDRRWHFCQW1LUkt0RW4xajVjR1VXdndrbWdScW9kWkhiS2dsV3I3Q21VUGRkeXFwRzZoMkU5c1NCaUE1MkQxQW9OVk1KVlZsNkhOL2x0TEFvYWxnWE5MOStRdWUxcDRBVHBHZDNRVXJMOXVBUGt2dTNsbi9kQWZUNnFMNTM4Zkx6cW4vWVRiVi9aL0dKd1lvRDdlQ29KbnVQTjNOZis5SWIvSzlyLzRSci9pUm4vR3hBZ3Q5MmlKQlBGYy8zWTdvdW9uemVLZmQ3aStQSHN0cDJxdm5KM0ZiamJtMTkyVFc1YjBuK0R2Y2hDQU5ka1hPMlIzVWRaMXRtajd5bFBmNWVOMk9odndyWXNWNmRKNnZaWTUvOWhiL0FmQ1NmTE1TMy9yNFM3NzliMW9mblhFQ0F6RmJJVmxtdDZ1Nk82djZXbnY2VXJYMy9aL3NzTzRrKzdpUC9MNSs2cjFMOExBM1YvNHBZT3RnVnE5KzM1K2JjUmw4eU8zUHloOFkxQ29WQW9GQXFGUXFGUUtCUUtoVUtoVUNnVUNvVkNvVkFvRkFxRlFxRlFLQlFLaFVLaFVDZ1VDb1ZDb1ZBb0ZBcUZRcUZRS0JRS2hVS2hVQ2dVQ29WQ29WQW9GQXFGUXFGUUtCUUtoVUtoVUNnVUNvWGkvNHovQUYzcytBR0J1L2N3QUFBQUFFbEZUa1N1UW1DQyIgLz4="/>
    <L7p:ResponseContentType stringValue="text/html; charset=UTF-8"/>
    </L7p:HardcodedResponse>
    </wsp:All>
    </wsp:Policy>


  • 5.  RE: The best practice for get an image with an api

    Posted Jan 16, 2020 10:00 AM
    Thanks Joe. That does work. However, it's really the worst of both worlds. It pulls back the Base64 string and that big string gets loaded with the HTML page. In that case you might as well just embed the Base64 string in the page itself and save the call to the route assertion. If the image is not static then I suppose this is the only way to go though.


  • 6.  RE: The best practice for get an image with an api
    Best Answer

    Posted Jan 16, 2020 04:20 PM
    Hi Charles, thanks for your replies folks,

    Well, the scenario is request an image from an internal image repository services after getting the id for the image an return in the api response.

    I have tested using a reverse proxy to getting the image url and i can see the response with a content type "image/jpg" using the ${response} variable, so i´m using a http route to get the image an return the response directly.

    This is working fine for me.

    Regards.


    ------------------------------
    [Julio C. Ramos]
    [DevOps]
    [IT Business Solutions DEF]
    [City]
    ------------------------------



  • 7.  RE: The best practice for get an image with an api

    Posted Jan 16, 2020 04:25 PM
    Hi Charles, thanks for your replies folks,

    Well, the scenario is request an image from an internal services after getting the id for the image an return in the api response.

    I have tested using a reverse proxy to getting the image url and i can see the response with a content type "image/jpg" using the ${response} variable, so i´m using a http route to get the image an return the response directly.

    Regards,

    ------------------------------
    [Julio C. Ramos]
    [DevOps]
    [IT Business Solutions DEF]
    [City]
    ------------------------------